PHP按supplier_id分组的多维数组循环打印无结果如何解决
问题根因
- 你分组后的
$datacart['data']是关联数组,键为supplier_id的值(如示例中的6、8),不是从0开始的连续数值索引,你使用for循环从0开始按数字索引访问,指向的元素不存在,所以无输出。 - 每个
supplier_id对应的键值是包含多个商品的子数组,不能直接访问['id']字段,需要先遍历子数组拿到单个商品的信息。
正确遍历方案
优先使用foreach遍历关联数组,代码更简洁不易出错:
$datacart = ['data' => $datacartgroup]; // 第一层遍历所有供应商分组 foreach ($datacart['data'] as $supplierId => $products) { // 可在此处输出供应商分组标题 echo "<div>供应商ID:{$supplierId}</div>"; // 第二层遍历该供应商下的所有商品 foreach ($products as $item) { // 按需输出商品字段,此处示例输出id和商品名 echo "<div>商品ID:{$item['id']},商品名:{$item['product_name']},购买数量:{$item['jumlah']}</div>"; } }
如果必须使用for循环,需要先将关联数组转为索引数组:
$datacart = ['data' => $datacartgroup]; // 将关联数组转为索引数组 $supplierIndex = array_values($datacart['data']); $supplierCount = count($supplierIndex); for ($i = 0; $i < $supplierCount; $i++) { $products = $supplierIndex[$i]; $productCount = count($products); for ($j = 0; $j < $productCount; $j++) { echo $products[$j]['id']; } }
内容的提问来源于stack exchange,提问作者masbro
相关产品推荐
相关产品推荐

