Php 根据条件结果在foreach循环中增加计数器

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 (

我有一个从mysql查询生成的数组,如下所示。它们的键是
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
        )

)
非常感谢您的反馈或帮助。

您可以通过以下两个步骤:

  • 按订单id聚合订单项
  • 构建最终输出
  • 第一关 第二关
    [prod\u code\u 1]
    [prod\u code\u 2]
    。。。。哎哟。。。。为什么不
    [prod_code]=>数组(2906290829092913)
    ?最终的数组将保存到文本文件(csv)中,这是第三方应用程序要求结构化数据的格式。