您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

数组拆分问题

2024/3/6 11:21:45发布32次查看
假设数组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;
  }
}
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product