[英]Array group by name in Laravel
我有一個 XML 格式的訂單列表,我需要按名稱列出產品和數量組以顯示如下列表:
<ul>
<li>Product name A - 3</li>
<li>Product name B - 6</li>
<li>Product name C- 3/<li>
</ul>
我閱讀了 XML 並使用 foreach 創建了一個數組,如下所示:
foreach($order->associations->order_rows as $product){
$list[]=[
'name' => $producto->product_name,
'quantity' =>$producto->product_quantity
];
}
而數組是
Array
(
[0] => Array
(
[name] => Kong - Size : M (39-42)
[quantity] => 1
)
[1] => Array
(
[name] => Kong - Size : M (39-42)
[quantity] => 1
)
[2] => Array
(
[name] => Invaders - Size : M (39-42)
[quantity] => 1
)
[3] => Array
(
[name] => Super Mamá - Size : S (35-38)
[quantity] => 1
)
[4] => Array
(
[name] => Vanlife - Size : M (39-42)
[quantity] => 1
)
我需要在前面顯示每個產品的數量(按名稱排列的數組)。
我正在嘗試使用集合
$namelist = collect($list)->groupBy('name');
但我不確定最好的方法是什么,我被卡住了
一種選擇是遍歷所有項目並對同名的數量求和。
如果不需要中間的$list
,也可以直接在 foreach 循環中對數量求和。
例如
$results = [];
foreach ($list as $item) {
array_key_exists($item["name"], $results) ?
$results[$item["name"]]["quantity"] += $item["quantity"] :
$results[$item["name"]] = $item;
}
echo "<ul>" . PHP_EOL;;
foreach ($results as $result) {
echo sprintf("<li>%s - %s</li>", $result["name"] , $result["quantity"]) . PHP_EOL;
}
echo "</ul>";
輸出
<ul>
<li>Kong - Size : M (39-42) - 2</li>
<li>Invaders - Size : M (39-42) - 1</li>
<li>Super Mamá - Size : S (35-38) - 1</li>
<li>Vanlife - Size : M (39-42) - 1</li>
</ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.