配列分割の問題

WBOY
リリース: 2016-06-23 14:22:54
オリジナル
979 人が閲覧しました

配列 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',  ),)
ログイン後にコピー


全体の合計に対して特定の条件が満たされた場合、配列を分割します。この例では、合計は 675 です。分割条件が合計が 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',  ),)
ログイン後にコピー

は議論(ソリューション)


rrereearray

[0] => dynp-770266110-00
[plant] => ]> > 15
[マウント] => 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;
  }
}

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート