如何使用laravel迭代一个数组来创建一个新的关联数组


how to iterate through an array to create a new associative array with php using laravel

如何通过PHP迭代数组来创建一个新的关联数组,以便插入到laravel中的数据透视表

。$arr =[3,2,3]//这是购物车中产品的数量

,并希望将它们添加到关联数组中,例如

$arr = ('quantity'=> 1)

所以我尝试遍历数组并将元素添加到新数组中并添加值但保持laravel pivot

所需的相同键

$newArr = array();

foreach($arr as $key => $value) {
 $newArray[] = array('quantity' => $value);
}

但是这是一个数组和子数组。

谢谢

尽你所能;你将永远只得到一个元素在你的结果数组(最后一个元素:准确地说)。这是因为键是相同的,并且每个后续键都覆盖前一个键。

在这种情况下,如果你需要一个关联数组;只要您希望以数量为关键,您就可能不得不使用多维数组。否则,您可以简单地为键添加前缀或后缀,以获得单个Associative数组。下面的代码片段可能很有见地:

    <?php
        $arr        = [3, 2, 3];
        $arrMD      = [];
        $arrAssoc   = [];
        foreach($arr as $k=>$qty){
            // CREATE A SUFFIXED KEY:
            $key            = "quantity_{$k}";
            $arrAssoc[$key] = $qty;
        }
        echo "<pre>";
        print_r($arrAssoc);
        echo "</pre>";
        // YIELDS
        Array
            (
              [quantity_0] => 3
              [quantity_1] => 2
              [quantity_2] => 3
            )
        foreach($arr as $k=>$qty){
            // CREATE A TEMPORARY ARRAY
            // TO BE USED IN GENERATING THE MULTIDIMENSIONAL ARRAY:
            $tmp            = ["quantity"=>$qty];
            $arrMD[]        = $tmp;
        }
        echo "<pre>";
        print_r($arrMD);
        echo "</pre>";
        //YIELDS:::
        Array
        (
            [0] => Array
                (
                [quantity] => 3
                )
            [1] => Array
                (
                  [quantity] => 2
                )
            [2] => Array
                (
                  [quantity] => 3
                )
        )