【问题标题】:Adding 'simple' array elements to multidimensional array one-after-another PHP一个接一个地向多维数组添加“简单”数组元素 PHP
【发布时间】:2021-04-21 17:29:08
【问题描述】:

问题:我想将 Array2 的值​​一个接一个地添加到多维数组 (array1) 中。

数组 1:

Array
(
    [0] => Array
        (
            [date] => 2020-01-01
            [itemsSold] => 25.00000000
        )

    [1] => Array
        (
            [date] => 2020-01-02 
            [itemsSold] => 50.00000000
        )

    [2] => Array
        (
            [date] => 2020-01-03 
            [itemsSold] => 25.00000000
        )
)

数组2:

Array
(
    [0] => 10
    [1] => 15
    [2] => 25
)

目标:

Array
(
    [0] => Array
        (
            [date] => 2020-01-01
            [itemsSold] => 25.00000000
            [0] => 10
        )

    [1] => Array
        (
            [date] => 2020-01-02 
            [itemsSold] => 50.00000000
            [0] => 15
        )

    [2] => Array
        (
            [date] => 2020-01-03 
            [itemsSold] => 25.00000000
            [0] => 25
        )
)

我从 2021 年 1 月开始学习编程,所以我得到的最佳解决方案是:

foreach ($array1 as $main => $value) {
   foreach ($array2 as $sec => $entry) {
      $array1[$main][] = $array2[$sec];
   }
}
print_r($array1);

输出:

Array
(
    [0] => Array
        (
            [date] => 2020-01-01
            [itemsSold] => 25.00000000
            [0] => 10
            [1] => 15
            [2] => 25
        )

    [1] => Array
        (
            [date] => 2020-01-02 
            [itemsSold] => 50.00000000
            [0] => 10
            [1] => 15
            [2] => 25
        )

    [2] => Array
        (
            [date] => 2020-01-03 
            [itemsSold] => 25.00000000
            [0] => 10
            [1] => 15
            [2] => 25
        )
)

我在循环中做错了什么?如何将array2的值一个接一个地放入array1??

感谢您的帮助;)

【问题讨论】:

    标签: php arrays loops multidimensional-array foreach


    【解决方案1】:

    您的代码的问题是您在不需要时将一个循环嵌套在另一个循环中。相反,使用循环格式foreach ($array1 as $key => $value),这样您就可以在$key 中捕获它的索引,然后将其用作$array2 的索引。

    foreach ($array1 as $key => $value) {
      // Append from $array2 by its index $key
      // Using [] will append at index [0]
      // You can modify $array1 inside the loop if you 
      // target it by $key. Notice that we are not using
      // $value at all in this loop - only the $key matters.
      $array1[$key][] = $array2[$key]; 
    }
    print_r($array1);
    

    foreach 还允许您在使用 & 引用时直接修改值。这有点短:

    foreach ($array1 as $key => &$value) {
      // Looping over references to $array1 sub-arrays
      // means that $value can be modified directly
      $value[] = $array2[$key];
    }
    print_r($array1);
    

    引用迭代描述in the PHP foreach manual

    【讨论】:

      猜你喜欢
      • 2021-12-30
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-16
      相关资源
      最近更新 更多