PHP 将变量推送到 array1,然后在循环中将其推送到 array2

PHP Pushing variables to array1 then push it to array2 in a loop

我无法获取数组的目标结果。

我想做的是:

我希望我解释我的想法和问题。

代码

$details_data = array();
$inner_data = array();

for($i=0; $i < $count_selected; $i++){
    $amount[$i] = $quantity[$i] * $price[$i];
    array_push($inner_data, $last_insert_id, $amount[$i], $quantity[$i], $products[$i]);
    array_push($details_data, $inner_data);
}
print_r($details_data); exit;

目标结果

$data = array(
        array(
                'last_insert_id' => 10,
                'amount' => 20000,
                'quantity' => 1,
                'product_id' => 1
        ),
        array(
                'last_insert_id' => 10,
                'amount' => 1000,
                'quantity' => 1,
                'product_id' => 2
        )
);

意外结果

Array
(
    [0] => Array
        (
            [0] => 10
            [1] => 20000
            [2] => 1
            [3] => 1
        )

    [1] => Array
        (
            [0] => 10
            [1] => 20000
            [2] => 1
            [3] => 1
            [4] => 10
            [5] => 10000
            [6] => 1
            [7] => 2
        )

)
for($i=0; $i < $count_selected; $i++){
    $amount[$i] = $quantity[$i] * $price[$i];

    $inner_data=array(
      'last_insert_id'=>$last_insert_id, 
      'amount'=>$amount[$i], 
      'quantity'=>$quantity[$i], 
      'product_id'=>$products[$i]
    );
    array_push($details_data, $inner_data);
}
array_push($details_data, 
array('last_insert_id'=>$last_insert_id, 'amount'=>$amount[$i], 'quantity'=>$quantity[$i], 'product_id'=>$products[$i])
);

尝试将数组直接推送到 details_data。

Link for your reference

<?php

    $details_data = array();

    /* do not set it as a global vari OR clear it when you re-use it */
    //$inner_data = array();

    $last_insert_id = 10;
    $amount = [20000, 1000];
    $quantity = [110, 220];
    $price = [32, 64];
    $products = [001, 002];

    for($i=0; $i < 2; $i++){
        $amount[$i] = $quantity[$i] * $price[$i];

        /* set it here as a local vari, thus it won't accumulate the result */
        $inner_data = array();

        //array_push($inner_data, $last_insert_id, $amount[$i], $quantity[$i], $products[$i]);
        $inner_data['last_insert_id'] = $last_insert_id;
        $inner_data['amount'] = $amount[$i];
        $inner_data['quantity'] = $quantity[$i];
        $inner_data['product_id'] = $products[$i];
        array_push($details_data, $inner_data);
    }

    echo "<pre>";
    print_r($details_data); exit;

    echo "</pre>";

?>