首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

数组拆分处置(整数时的处理)

2013-12-28 
数组拆分处理(整数时的处理)已知数组a:array (0 array (po_num 20131227-000008102,plant

数组拆分处理(整数时的处理)
已知数组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'];
$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
                )

        )

    [1] => Array
        (
            [0] => Array
                (
                    [po_num] => 20131227-000008102
                    [plant] => JQSP
                    [get_date] => 2013-12-27
                    [cust_no] => 12654172
                    [total] => 0 //产生了为0的项
                    [snp] => 15
                    [mount] => 15
                    [lp_no] => P000000D
                )

        )

)


既然是整除,那么结果应该只有一项,如何修改代码让其只有非0项生成?
[解决办法]
本帖最后由 xuzuning 于 2013-12-27 15:34:48 编辑
$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
                )

        )

)

热点排行