Php 根据条件结果在foreach循环中增加计数器
我有一个从mysql查询生成的数组,如下所示。它们的键是Php 根据条件结果在foreach循环中增加计数器,php,arrays,foreach,while-loop,Php,Arrays,Foreach,While Loop,我有一个从mysql查询生成的数组,如下所示。它们的键是order\u id值 订单数组 Array ( [2646] => Array ( [order_id] => 2646 ) [2647] => Array ( [order_id] => 2647 ) [2650] => Array (
order\u id
值
订单数组
Array
(
[2646] => Array
(
[order_id] => 2646
)
[2647] => Array
(
[order_id] => 2647
)
[2650] => Array
(
[order_id] => 2650
)
[2658] => Array
(
[order_id] => 2658
)
)
Array
(
[0] => Array
(
[order_id] => 2646
[prod_code] => 2811
[order_qty] => 1
)
[1] => Array
(
[order_id] => 2646
[prod_code] => 2812A
[order_qty] => 3
)
[2] => Array
(
[order_id] => 2647
[prod_code] => 2812A
[order_qty] => 2
)
[3] => Array
(
[order_id] => 2647
[prod_code] => 2810
[order_qty] => 2
)
[4] => Array
(
[order_id] => 2650
[prod_code] => 2906
[order_qty] => 1
)
[5] => Array
(
[order_id] => 2650
[prod_code] => 2908
[order_qty] => 6
)
[6] => Array
(
[order_id] => 2650
[prod_code] => 2909
[order_qty] => 3
)
[7] => Array
(
[order_id] => 2650
[prod_code] => 2913
[order_qty] => 1
)
[8] => Array
(
[order_id] => 2658
[prod_code] => 2880
[order_qty] => 3
)
[9] => Array
(
[order_id] => 2658
[prod_code] => 2881
[order_qty] => 3
)
[10] => Array
(
[order_id] => 2658
[prod_code] => 2882
[order_qty] => 1
)
)
我正在考虑向数组的每一行添加项目,其中包含来自另一个数组的项目,看起来像
订单项目数组
Array
(
[2646] => Array
(
[order_id] => 2646
)
[2647] => Array
(
[order_id] => 2647
)
[2650] => Array
(
[order_id] => 2650
)
[2658] => Array
(
[order_id] => 2658
)
)
Array
(
[0] => Array
(
[order_id] => 2646
[prod_code] => 2811
[order_qty] => 1
)
[1] => Array
(
[order_id] => 2646
[prod_code] => 2812A
[order_qty] => 3
)
[2] => Array
(
[order_id] => 2647
[prod_code] => 2812A
[order_qty] => 2
)
[3] => Array
(
[order_id] => 2647
[prod_code] => 2810
[order_qty] => 2
)
[4] => Array
(
[order_id] => 2650
[prod_code] => 2906
[order_qty] => 1
)
[5] => Array
(
[order_id] => 2650
[prod_code] => 2908
[order_qty] => 6
)
[6] => Array
(
[order_id] => 2650
[prod_code] => 2909
[order_qty] => 3
)
[7] => Array
(
[order_id] => 2650
[prod_code] => 2913
[order_qty] => 1
)
[8] => Array
(
[order_id] => 2658
[prod_code] => 2880
[order_qty] => 3
)
[9] => Array
(
[order_id] => 2658
[prod_code] => 2881
[order_qty] => 3
)
[10] => Array
(
[order_id] => 2658
[prod_code] => 2882
[order_qty] => 1
)
)
我在解决如何循环order\u items
数组并将prod\u code
和order\u quantity
值插入order
数组中order\u id
值匹配时遇到的问题。这是我到目前为止所拥有的
// create orders array - key by order_id
while ($order = mysqli_fetch_assoc($order_rows)) {
$orders[$order['order_id']] = $order;
}
// create the order_items array
while ($item = mysqli_fetch_assoc($item_rows)) {
$order_items[] = $item;
}
// update orders array with ordered items
$item_index = 1;
foreach ($order_items as $key => $value) {
// get the order id
$item_order_id = $value['order_id'];
// update orders array with ordered items grouped by order_id
if ($item_order_id == $orders[$item_order_id]['order_id']) {
$orders[$item_order_id]['prod_code_'.$item_index] = $value['prod_code'];
$orders[$item_order_id]['order_qty_'.$item_index] = $value['order_qty'];
// same order id so increment the counter
$item_index++;
} else {
// new order id start at 1
$item_index = 1;
}
}
我的问题是,当我们查看新的项目\u订单\u id
时,计数器没有重置回1
我试图为数组实现的输出是这样的
所需订单数组输出
Array
(
[2646] => Array
(
[order_id] => 2646
[prod_code_1] => 2811
[order_qty_1] => 1
[prod_code_2] => 2812A
[order_qty_2] => 3
)
[2647] => Array
(
[order_id] => 2647
[prod_code_1] => 2812A
[order_qty_1] => 2
[prod_code_2] => 2810
[order_qty_2] => 2
)
[2650] => Array
(
[order_id] => 2650
[prod_code_1] => 2906
[order_qty_1] => 1
[prod_code_2] => 2908
[order_qty_2] => 6
[prod_code_3] => 2909
[order_qty_3] => 3
[prod_code_4] => 2913
[order_qty_4] => 1
)
[2658] => Array
(
[order_id] => 2658
[prod_code_1] => 2880
[order_qty_1] => 3
[prod_code_2] => 2881
[order_qty_2] => 3
[prod_code_3] => 2882
[order_qty_3] => 1
)
)
非常感谢您的反馈或帮助。您可以通过以下两个步骤:
[prod\u code\u 1]
,[prod\u code\u 2]
。。。。哎哟。。。。为什么不[prod_code]=>数组(2906290829092913)
?最终的数组将保存到文本文件(csv)中,这是第三方应用程序要求结构化数据的格式。