首页 >后端开发 >php教程 >将已知数组按条件分为若个新数组

将已知数组按条件分为若个新数组

WBOY
WBOY原创
2016-06-23 14:24:47892浏览

已知数组:

array (  0 =>   array (    'po_num' => 'DYNP-770266110-00',    'plant' => 'DYNP',    'get_date' => '2013-09-09',    'cust_no' => '12654172',    'total' => '615',    'snp' => '15',    'mount' => '41',    'lp_no' => 'P000000D',  ),  1 =>   array (    'po_num' => 'DYNP-770266110-00',    'plant' => 'DYNP',    'get_date' => '2013-09-09',    'cust_no' => '12647212',    'total' => '60',    'snp' => '15',    'mount' => '4',    'lp_no' => 'P000000D',  ),)


能否按字段total为100为单位把数组再分为若干个新的数组?并加上序号字段在其中,比如:
  array (    'po_num' => '1/7',//新增字段信息    'po_num' => 'DYNP-770266110-00',    'plant' => 'DYNP',    'get_date' => '2013-09-09',    'cust_no' => '12654172',    'total' => '615',    'snp' => '15',    'mount' => '41',    'lp_no' => 'P000000D',  ),...)


回复讨论(解决方案)

需求不明确~~

又来了?

$ar = array (  0 =>   array (    'po_num' => 'DYNP-770266110-00',    'plant' => 'DYNP',    'get_date' => '2013-09-09',    'cust_no' => '12654172',    'total' => '615',    'snp' => '15',    'mount' => '41',    'lp_no' => 'P000000D',  ),  1 =>   array (    'po_num' => 'DYNP-770266110-00',    'plant' => 'DYNP',    'get_date' => '2013-09-09',    'cust_no' => '12647212',    'total' => '60',    'snp' => '15',    'mount' => '4',    'lp_no' => 'P000000D',  ),);$split_num = 100;foreach($ar as $item) {  if($item['total'] <= $split_num) {    $res[] = $item;    continue;  }  $total = $item['total'];  $n = ceil($total/$split_num);  for($i=1; $i<$n; $i++) {    $res[] = array_merge(array('po_nume' => "$i/$n"), $item, array('total' => $split_num));  }  $res[] = array_merge(array('po_nume' => "$i/$n"), $item, array('total' => $total%$split_num));}print_r($res);
Array(    [0] => Array        (            [po_nume] => 1/7            [po_num] => DYNP-770266110-00            [plant] => DYNP            [get_date] => 2013-09-09            [cust_no] => 12654172            [total] => 100            [snp] => 15            [mount] => 41            [lp_no] => P000000D        )    [1] => Array        (            [po_nume] => 2/7            [po_num] => DYNP-770266110-00            [plant] => DYNP            [get_date] => 2013-09-09            [cust_no] => 12654172            [total] => 100            [snp] => 15            [mount] => 41            [lp_no] => P000000D        )    [2] => Array        (            [po_nume] => 3/7            [po_num] => DYNP-770266110-00            [plant] => DYNP            [get_date] => 2013-09-09            [cust_no] => 12654172            [total] => 100            [snp] => 15            [mount] => 41            [lp_no] => P000000D        )    [3] => Array        (            [po_nume] => 4/7            [po_num] => DYNP-770266110-00            [plant] => DYNP            [get_date] => 2013-09-09            [cust_no] => 12654172            [total] => 100            [snp] => 15            [mount] => 41            [lp_no] => P000000D        )    [4] => Array        (            [po_nume] => 5/7            [po_num] => DYNP-770266110-00            [plant] => DYNP            [get_date] => 2013-09-09            [cust_no] => 12654172            [total] => 100            [snp] => 15            [mount] => 41            [lp_no] => P000000D        )    [5] => Array        (            [po_nume] => 6/7            [po_num] => DYNP-770266110-00            [plant] => DYNP            [get_date] => 2013-09-09            [cust_no] => 12654172            [total] => 100            [snp] => 15            [mount] => 41            [lp_no] => P000000D        )    [6] => Array        (            [po_nume] => 7/7            [po_num] => DYNP-770266110-00            [plant] => DYNP            [get_date] => 2013-09-09            [cust_no] => 12654172            [total] => 15            [snp] => 15            [mount] => 41            [lp_no] => P000000D        )    [7] => Array        (            [po_num] => DYNP-770266110-00            [plant] => DYNP            [get_date] => 2013-09-09            [cust_no] => 12647212            [total] => 60            [snp] => 15            [mount] => 4            [lp_no] => P000000D        ))

...
是啊。又是这种问题。
    [6] => Array
        (
            [po_no] => 7/7
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12654172
            [total] => 15
        )

    [7] => Array
        (
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12647212
            [total] => 60
        )

这个能不能作为一项来处理?将原来的数组并到前一个数组中,而不是重新计算$i/$n的序列号。变成这样的形式:

    [6] => Array
        (
            [po_no] => 7/7
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12654172
            [total] => 15
        )

    [7] => Array
        (
            [po_no] => 7/7
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12647212
            [total] => 60 //15+60=75          )

又来了?

不好意思,发现问过这个问题了,抱歉!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn