读书人

数组拆分有关问题

发布时间: 2013-09-29 11:07:08 作者: rapoo

数组拆分问题
假设数组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
)

)

读书人网 >PHP

热点推荐