如何将2个多维数组合并为一个

时间:2021-01-15 18:13:21

标签: php arrays multidimensional-array foreach

我是 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”,但我是新手,想找出解决问题的聪明方法。

非常感谢任何帮助?

3 个答案:

答案 0 :(得分:2)

您可以使用 array_maparray_combine 的力量:

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

您可以使用 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);

输出如下:

enter image description here