微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

非常感谢任何帮助?

解决方法

您可以使用 array_maparray_combine 的力量:

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

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

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

<?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',2 => Array
        (
            0 => 'Price',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);
,

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

$arr1 = [
            [100,'2020-01-02',75],[50,'2020-01-03',35],[100,'2020-01-05',165],];
        $arr2 = [
            ['price','date','priceNet'],['price',];
        $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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。