Heim > Backend-Entwicklung > PHP-Tutorial > 数组拆分问题

数组拆分问题

WBOY
Freigeben: 2016-06-23 14:22:54
Original
974 Leute haben es durchsucht

假设数组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',  ),)
Nach dem Login kopieren


当满足整个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',  ),)
Nach dem Login kopieren


回复讨论(解决方案)

$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);
Nach dem Login kopieren
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);
Nach dem Login kopieren

能不能获取这样的结果?
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        ))
Nach dem Login kopieren

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

$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);
Nach dem Login kopieren
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                )        ))
Nach dem Login kopieren

能否变成这样?
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                )        ))
Nach dem Login kopieren

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage