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

数组拆分有关问题

2013-09-29 
数组拆分问题假设数组a:array (0 array (po_num DYNP-770266110-00,plant DYNP,get_date

数组拆分问题
假设数组a:

array (
  0 => 
  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',
  ),
  1 => 
  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',
  ),
)


当满足整个total为一定条件时,将数组拆分开来。例中total为675,假设拆分条件为total满足225,也就是拆分为3个数组,如何能将数组拆分成这样?

//b
array (
  0 => 
  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',
  ),
  1 => 
  array (
    'po_num' => 'DYNP-770266110-00',
    'plant' => 'DYNP',
    'get_date' => '2013-09-09',
    'cust_no' => '12654172',
    'total' => '165',
    'snp' => '15',
    'mount' => '11',
    'lp_no' => 'P000000D',
  ),
)
//c
array (
  0 => 
  array (
    'po_num' => 'DYNP-770266110-00',
    'plant' => 'DYNP',
    'get_date' => '2013-09-09',
    'cust_no' => '12647212',
    'total' => '225',
    'snp' => '15',
    'mount' => '15',
    'lp_no' => 'P000000D',
  ),

//d
array (
  0 => 
  array (
    'po_num' => 'DYNP-770266110-00',
    'plant' => 'DYNP',
    'get_date' => '2013-09-09',
    'cust_no' => '12647212',
    'total' => '225',
    'snp' => '15',
    'mount' => '15',
    'lp_no' => 'P000000D',
  ),



[解决办法]
$a = array (
  0 => 
  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',
  ),
  1 => 
  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',
  ),
);
$t = 225;
foreach($a as $v) {
  $t1 = $v['total'];
  $v['total'] = $t1 % $t;
  $res[] = $v;
  $t1 -= $v['total'];
  while($t1 >= $t) {


    $v['total'] = $t;
    $t1 -= $t;
    $res[] = $v;
  }
}
print_r($res);

Array
(
    [0] => 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
        )

    [1] => Array
        (
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12654172
            [total] => 165
            [snp] => 15
            [mount] => 41
            [lp_no] => P000000D
        )

    [2] => Array
        (
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12654172
            [total] => 225
            [snp] => 15
            [mount] => 41
            [lp_no] => P000000D
        )

    [3] => Array
        (
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12654172
            [total] => 225
            [snp] => 15
            [mount] => 41
            [lp_no] => P000000D
        )

)

[解决办法]
当然可以,不过有什么意义呢?
$a = array (
  0 => 
  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',
  ),
  1 => 
  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',
  ),
);
$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;
  }
}
print_r($res);

Array
(
    [0] => Array
        (
            [0] => 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
                )

            [1] => Array
                (
                    [po_num] => DYNP-770266110-00
                    [plant] => DYNP
                    [get_date] => 2013-09-09
                    [cust_no] => 12654172
                    [total] => 165
                    [snp] => 15
                    [mount] => 41
                    [lp_no] => P000000D
                )

        )

    [1] => Array
        (
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12654172
            [total] => 225
            [snp] => 15
            [mount] => 41
            [lp_no] => P000000D
        )

    [2] => Array
        (
            [po_num] => DYNP-770266110-00
            [plant] => DYNP
            [get_date] => 2013-09-09
            [cust_no] => 12654172
            [total] => 225
            [snp] => 15
            [mount] => 41
            [lp_no] => P000000D
        )

)

热点排行