Array sharding (processing of integers) known array:
array ( 0 => array ( 'po_num' => '20131227-000008102', 'plant' => 'JQSP', 'get_date' => '2013-12-27', 'cust_no' => '12654172', 'total' => '225', 'snp' => '15', 'mount' => '15', 'lp_no' => 'P000000D', ),)
The processing procedure is as follows:
$t = 225;$k = 0;foreach($a as $v) {$t1 = $v['total'];$v['total'] = $t1 % $t;$res[$k][] = $v;$t1 -= $v['total'];while($t1 >= $t) {$v['total'] = $t;$t1 -= $t;$res[++$k][] = $v;}}$res = array_reverse($res);print_r($res);
Result:
Array ([0] => Array ([0] => Array ([po_num] => 20131227-000008102 [plant] => JQSP [get_date] => 2013-12-27 [cust_no] => 12654172 [total] => 225 [snp] => 15 [mount] => 15 [lp_no] => P000000D )) [1] => Array ([0] => Array ([po_num] => 20131227-000008102 [plant] => JQSP [get_date] => 2013-12-27 [cust_no] => 12654172 [total] => 0 // items with 0 are generated [snp] => 15 [mount] => 15 [lp_no] => P000000D )))
Since the division is complete, there should be only one result. how can I modify the code to make it generate only non-zero items?
Reply to discussion (solution)
It's complicated to think about, what results do you want, or you can change your mind.
This post was last edited by xuzuning at 15:34:48 on
$a = array ( 0 => array ( 'po_num' => '20131227-000008102', 'plant' => 'JQSP', 'get_date' => '2013-12-27', 'cust_no' => '12654172', 'total' => '225', 'snp' => '15', 'mount' => '15', 'lp_no' => 'P000000D', ),);$t = 225;$k = 0; foreach($a as $v) { $t1 = $v['total']; if($t1 % $t) $v['total'] = $t1 % $t; $res[$k][] = $v; $t1 -= $v['total']; while($t1 >= $t) { $v['total'] = $t; $t1 -= $t; $res[++$k][] = $v; }}$res = array_reverse($res);print_r($res);
Array( [0] => Array ( [0] => Array ( [po_num] => 20131227-000008102 [plant] => JQSP [get_date] => 2013-12-27 [cust_no] => 12654172 [total] => 225 [snp] => 15 [mount] => 15 [lp_no] => P000000D ) ))