【问题标题】:How to merge 2 multidimensional array's into one如何将2个多维数组合并为一个
【发布时间】:2021-04-20 19:12:05
【问题描述】:

我是 php 新手,需要有关多维数组的帮助。具体来说,我希望 array1 成为“值”,而 array2 成为“键”。

数组1:

Array
(
    [0] => Array
        (
            [0] => 100
            [1] => 2020-01-02
            [2] => 75
        )

    [1] => Array
        (
            [0] => 50
            [1] => 2020-01-03
            [2] => 35
        )

    [2] => Array
        (
            [0] => 200
            [1] => 2020-01-05
            [2] => 165
        )
)

数组2:

Array
(
    [0] => Array
        (
            [0] => Price
            [1] => Date
            [2] => PriceNet
        )

    [1] => Array
        (
            [0] => Price
            [1] => Date
            [2] => PriceNet
        )

    [2] => Array
        (
            [0] => Price
            [1] => Date
            [2] => PriceNet
        )
)

想要的结果:


Array
(
    [0] => Array
        (
            [Price] => 100
            [Date] => 2020-01-02
            [PriceNet] => 75
        )

    [1] => Array
        (
            [Price] => 50
            [Date] => 2020-01-03
            [PriceNet] => 35
        )

    [2] => Array
        (
            [Price] => 200
            [Date] => 2020-01-05
            [PriceNet] => 165
        )
)

我研究了 'array_merge' 和 'array_combine' 但我是新手,无法找到解决问题的聪明方法。

非常感谢任何帮助????

【问题讨论】:

  • 您可以从 for/foreach 循环开始。
  • 似乎 array2 不需要二维数组:所有行都重复相同的信息...

标签: php arrays multidimensional-array foreach


【解决方案1】:

您可以使用array_maparray_combine 的强大功能:

$array3 = array_map("array_combine", $array2, $array1);

【讨论】:

    【解决方案2】:

    写得很快,没有经过很好的测试;)你满意吗?

    当然,这段代码有点硬编码;)

    <?php
    
    $array1 = Array
    (
        0 => Array
            (
                0 => 100,
                1 => '2020-01-02',
                2 => 75
            ),
    
        1 => Array
            (
                0 => 50,
                1 => '2020-01-03',
                2 => 35
            ),
    
        2 => Array
            (
                0 => 200,
                1 => '2020-01-05',
                2 => 165,
            )
    );
    
    
    
    $array2 = Array
    (
        0 => Array
            (
                0 => 'Price',
                1 => 'Date',
                2 => 'PriceNet'
            ),
    
        1 => Array
            (
                0 => 'Price',
                1 => 'Date',
                2 => 'PriceNet'
            ),
    
        2 => Array
            (
                0 => 'Price',
                1 => 'Date',
                2 => 'PriceNet'
            )
            );
    
    $array3 = [];
    
    foreach($array1 as $key => $value) {
        $array3[$key] = [
            $array2[$key][0] => $array1[$key][0],
            $array2[$key][1] => $array1[$key][1],
            $array2[$key][2] => $array1[$key][2],
        ];
    }
    
    print_r($array3);
    

    【讨论】:

      【解决方案3】:

      您可以使用 foreach 或 for 循环。但是我已经使用 foreach 循环为您实现了一个解决方案。

      $arr1 = [
                  [100, '2020-01-02', 75],
                  [50, '2020-01-03', 35],
                  [100, '2020-01-05', 165],
              ];
              $arr2 = [
                  ['price', 'date', 'priceNet'],
                  ['price', 'date', 'priceNet'],
                  ['price', 'date', 'priceNet'],
              ];
              $finalResult = [];
              $columns = reset($arr2);
              foreach ($arr1 as $values) {
                  $result = [];
                  foreach ($values as $key => $value) {
                      $result[$columns[$key]] = $value;
                  }
                  $finalResult [] = $result;
              }
              print_r($finalResult);
      

      这是输出的样子:

      【讨论】:

      • 不得不说,另一个答案似乎更优雅
      猜你喜欢
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多