欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

数组拆分问题

程序员文章站 2022-06-17 07:57:48
...
假设数组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个数组,如何能将数组拆分成这样?
//barray (  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',  ),)//carray (  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',  ),)//darray (  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
)

)

...

能不能变成这样?把3组区分出来。

1楼

如果mount项的值也发生改变,是不是和这个一样?

$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(    [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        ))

当然可以,不过有什么意义呢?

$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
)

)

当然可以,不过有什么意义呢?
我是想记循环输出的结果,foreach($res1 as $value)这样。

当然可以,不过有什么意义呢?
我用了array_chunk,怎么结果变成了这样?

Array(    [0] => 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] => 11                            [lp_no] => P000000D                        )                )        )    [1] => Array        (            [0] => Array                (                    [po_num] => DYNP-770266110-00                    [plant] => DYNP                    [get_date] => 2013-09-09                    [cust_no] => 12654172                    [total] => 225                    [snp] => 15                    [mount] => 15                    [lp_no] => P000000D                )        )    [2] => Array        (            [0] => Array                (                    [po_num] => DYNP-770266110-00                    [plant] => DYNP                    [get_date] => 2013-09-09                    [cust_no] => 12654172                    [total] => 225                    [snp] => 15                    [mount] => 15                    [lp_no] => P000000D                )        ))

能否变成这样?
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] => 11               [lp_no] => P000000D           )        )    [1] => Array        (            [0] => Array                (                    [po_num] => DYNP-770266110-00                    [plant] => DYNP                    [get_date] => 2013-09-09                    [cust_no] => 12654172                    [total] => 225                    [snp] => 15                    [mount] => 15                    [lp_no] => P000000D                )        )    [2] => Array        (            [0] => Array                (                    [po_num] => DYNP-770266110-00                    [plant] => DYNP                    [get_date] => 2013-09-09                    [cust_no] => 12654172                    [total] => 225                    [snp] => 15                    [mount] => 15                    [lp_no] => P000000D                )        ))

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;
}
}

相关标签: 数组拆分问题