首页 > 解决方案 > 一个接一个地向多维数组添加“简单”数组元素 PHP

问题描述

问题:我想将 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?

谢谢你的帮助 ;)

标签: phparraysloopsmultidimensional-arrayforeach

解决方案


您的代码的问题是您在不需要时将一个循环嵌套在另一个循环中。相反,使用循环格式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);

PHP手册中描述了通过引用进行迭代foreach


推荐阅读