在对简单数组进行分组时存在一些问题。想将大小和总和分组。这些是鞋子的尺码。
这是我的数组:
Array
(
[0] => Array
(
[sku] => '82368-21'
[size] => 36
[quantity] => 1
)
[1] => Array
(
[sku] => '82368-21'
[size] => 36
[quantity] => 3
)
[2] => Array
(
[sku] => '82368-22'
[size] => 38
[quantity] => 0
)
[3] => Array
(
[sku] => '82368-23'
[size] => 39
[quantity] => 2
)
[4] => Array
(
[sku] => '82368-23'
[size] => 39
[quantity] => 1
)
)
如您所见,鞋子有多种尺寸和数量。那里 无需删除任何重复项,因为它们都应按大小分组。 我想输出以下内容:
Array
(
[0] => Array
(
[sku] => '82368-21'
[size] => 36
[quantity] => 4
)
[1] => Array
(
[sku] => '82368-22'
[size] => 38
[quantity] => 0
)
[2] => Array
(
[sku] => '82368-23'
[size] => 39
[quantity] => 3
)
)
答案 0 :(得分:1)
您可以使用简单的foreach循环来做到这一点:
$array = array (
0 =>
array (
'size' => 36,
'quantity' => 1
),
1 =>
array (
'size' => 36,
'quantity' => 3
),
2 =>
array (
'size' => 38,
'quantity' => 0
),
3 =>
array (
'size' => 39,
'quantity' => 2
),
4 =>
array (
'size' => 39,
'quantity' => 1
)
);
$out = [];
foreach($array as $value){
$key = $value['size'];
if(!isset($out[$key])){
$out[$key] = $value;
}else{
$out[$key]['quantity'] += $value['quantity'];
}
}
print_r($out);
输出
Array
(
[36] => Array
(
[size] => 36
[quantity] => 4
)
[38] => Array
(
[size] => 38
[quantity] => 0
)
[39] => Array
(
[size] => 39
[quantity] => 3
)
)
我认为您所缺少的是使用size
作为密钥。对于数组,当您希望将单个值匹配的事物分组或组合时,最好采用该值并将其用作数组键。这样只会更容易在输出数组中找到组。完成操作后,您随时可以使用array_values
将键重置为“普通”编号索引。
//reset the array keys
$out = array_values($out);
print_r($out);
输出
Array
(
[0] => Array
(
[size] => 36
[quantity] => 4
)
[1] => Array
(
[size] => 38
[quantity] => 0
)
[2] => Array
(
[size] => 39
[quantity] => 3
)
)
欢呼