[英]combine the same values in array
請幫我組合數組值。 我有相同的數組:在我的情況下,我應該像密鑰一樣保存客戶名稱。
Array
(
[Test Name] => Array
(
[0] => Array
(
[name] =>
banana
[id] =>
45002
[quantity] =>
10
)
[1] => Array
(
[name] =>
banana
[id] =>
45002
[quantity] =>
20
)
[3] => Array
(
[name] =>
apple
[id] =>
23402
[qua] =>
1
)
[5] => Array
(
[name] =>
cherry
[id] =>
40017
[qua] =>
7
)
如何獲得這樣的東西:
Array
(
[Test Name] => Array
(
[0] => Array
(
[name] =>
banana
[id] =>
45002
[quantity] =>
30 // summ quantity but unique name and id
)
[1] => Array
(
[name] =>
apple
[id] =>
23402
[qua] =>
1
)
[2] => Array
(
[name] =>
cherry
[id] =>
40017
[qua] =>
7
)
在我的情況下,我應該像鑰匙一樣保存客戶姓名。 然后我會把它上傳到桌子上。
您可以使用array_map
和array_reduce
來完成它:
$results = array_map(function ($result) {
return array_reduce($result, function ($carry, $item) {
if (isset($carry[$item['id']])) {
$carry[$item['id']]['quantity'] += $item['quantity'];
} else {
$carry[$item['id']] = $item;
}
return $carry;
}, array());
}, $results);
從文檔:
array_map()在對每個元素應用回調函數后返回一個包含 array1 的所有元素的數組。
array_reduce()將回調函數迭代地應用於數組元素,從而將數組縮減為單個值。
在我們的例子中,給array_reduce
函數的回調返回一個最終數組,其中包含id
唯一項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.