如何将数组中的对象项整合转换为表格

问题描述 投票:0回答:1

您能给我解决这个问题的建议吗?

我得到了这样的数据:

 orders =[
        {
            orderID:1,
            Name: 'Sam',
            orderList: [
                {SKU: 'A001',Qty: 2},{SKU: 'A003',Qty: 4}
            ]
        },
        {
            orderID:2,
            Name: 'Sam',
            orderList: [
                {SKU: 'A001',Qty: 1},{SKU: 'A002',Qty: 1}
            ]
        },
        {
            orderID:3,
            Name: 'Sam',
            orderList: [
                {SKU: 'A001',Qty: 2},{SKU: 'A004',Qty: 2}
            ]
        },
        {
            orderID:4,
            Name: 'Sam',
            orderList: [
                {SKU: 'A003',Qty: 3},{SKU: 'A002',Qty: 1}
            ]
        },
        {
            orderID:5,
            Name: 'Sam',
            orderList: [
                {SKU: 'A002',Qty: 1},{SKU: 'A003',Qty: 1}
            ]
        }
]

//foreach 之后我想输出每个订单项目并收集它们的 SKU 和数量,例如:

foreach ($orders as $order) {
   echo <td>$order.orderList.sku</td>
   echo <td>$order.orderList.qty</td>
   
//output a table like:
/*
item     |    Qty
A001     |    5
A002     |    4
A003     |    8
A004     |    2
B001     |    1
/*
}

请给我一些建议,非常感谢!

javascript php arraylist foreach
1个回答
0
投票

您可以通过以下方式达到您的要求:

  • 创建一个关联数组来存储
    SKU
    及其总数。
  • 迭代订单并添加每个
    SKU
    的数量。
  • 以表格格式打印输出。
$skuTotals = [];

foreach ($orders as $order) {
    foreach ($order['orderList'] as $item) {
        if (array_key_exists($item['SKU'], $skuTotals)) {
            $skuTotals[$item['SKU']] += $item['Qty'];
        } else {
            $skuTotals[$item['SKU']] = $item['Qty'];
        }
    }
}

# Print table elements or perform actions as per your requirement
foreach ($skuTotals as $sku => $qty) {
    echo "<tr><td>$sku</td><td>$qty</td></tr>";
}

演示在这里


参考:array_key_exists

© www.soinside.com 2019 - 2024. All rights reserved.