【问题标题】:PHP Pushing variables to array1 then push it to array2 in a loopPHP将变量推送到array1,然后在循环中将其推送到array2
【发布时间】:2018-04-26 04:05:16
【问题描述】:

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

我想做的是:

  • 在每个循环中推送$inner_data 中的每个变量。
  • 然后将$inner_data 推送到$details_data 以在array 内创建array

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

代码

$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
        )

)

【问题讨论】:

    标签: php arrays array-push


    【解决方案1】:
    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);
    }
    

    【讨论】:

    • 该死的你很快,但是是的 @Emjey23 差不多了。
    • 一开始忘记输入 ctrl+k 来格式化代码。会打败其他人哈哈
    • 是的,他的速度很快。他的回答是正确的。等待几分钟接受。谢谢
    【解决方案2】:

    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>";
    
    ?>
    

    【讨论】:

    • 感谢您的提示和解释。真的很感激。
    【解决方案3】:
    array_push($details_data, 
    array('last_insert_id'=>$last_insert_id, 'amount'=>$amount[$i], 'quantity'=>$quantity[$i], 'product_id'=>$products[$i])
    );
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-09
      • 1970-01-01
      • 2019-05-21
      相关资源
      最近更新 更多