我有一个 php 数组
Array
(
[0] => Array
(
[location] => Kansas
[kit] => Moving Kit
[quantity] => 1
)
[1] => Array
(
[location] => Louisiana
[kit] => Anchored4Life DVD Kit
[quantity] => 1
)
[2] => Array
(
[location] => Louisiana
[kit] => Anchored4Life DVD Kit
[quantity] => 1
)
[3] => Array
(
[location] => Louisiana
[kit] => Anchored4Life DVD Kit
[quantity] => 1
)
[4] => Array
(
[location] => Pennsylvania
[kit] => Anchored4Life DVD Kit
[quantity] => 5
)
[5] => Array
(
[location] => Pennsylvania
[kit] => Welcome Kit
[quantity] => 1
)
)
我想对它进行排序,以便我根据位置和套件以及它们的数量和数量(如果套件更薄)接收数据。
ONLouisiana Anchored4Life DVD Kit
是重复的,所以我想知道每个州有多少套件订单,例如Louisiana Anchored4Life DVD Kit
数量 3。
我已经尝试过,array_count_values()
但这仅根据字符串进行计数,我需要它用于多个套件,并且套件未预定义。
我打算暂停发布,但后来我看到了其他答案。
您说在位置上分组,所以我认为这就是您需要的:
我在关联数组中对位置进行分组,然后对不同的套件进行分组,如果套件已添加,则对数量求和。
foreach($arr as $sub){
if(!isset($res[$sub['location']])){
$res[$sub['location']][$sub['kit']] = $sub;
}elseif(!isset($res[$sub['location']][$sub['kit']])){
$res[$sub['location']][$sub['kit']] = $sub;
}else{
$res[$sub['location']][$sub['kit']]['quantity'] += $sub['quantity'];
}
}
var_dump($res);
这将返回:
array(3) {
["Kansas"]=>
array(1) {
["Moving Kit"]=>
array(3) {
["location"]=>
string(6) "Kansas"
["kit"]=>
string(10) "Moving Kit"
["quantity"]=>
string(1) "1"
}
}
["Louisiana"]=>
array(1) {
["Anchored4Life DVD Kit"]=>
array(3) {
["location"]=>
string(9) "Louisiana"
["kit"]=>
string(21) "Anchored4Life DVD Kit"
["quantity"]=>
int(3)
}
}
["Pennsylvania"]=>
array(2) {
["Anchored4Life DVD Kit"]=>
array(3) {
["location"]=>
string(12) "Pennsylvania"
["kit"]=>
string(21) "Anchored4Life DVD Kit"
["quantity"]=>
string(1) "5"
}
["Welcome Kit"]=>
array(3) {
["location"]=>
string(12) "Pennsylvania"
["kit"]=>
string(11) "Welcome Kit"
["quantity"]=>
string(1) "1"
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句