PHP将数组与匹配项组合在一起

时间:2018-03-17 17:46:38

标签: php arrays multidimensional-array

我有2个这个

的数组
Array
(
    [0] => Array
        (
            [day] => 17-3-2018
        )

    [1] => Array
        (
            [day] => 16-3-2018
        )

    [2] => Array
        (
            [day] => 15-3-2018
        )

    [3] => Array
        (
            [day] => 14-3-2018
        )
)

Array
(
    [0] => stdClass Object
        (
            [day] => 15-3-2018
            [count] => 2
        )

    [1] => stdClass Object
        (
            [day] => 17-3-2018
            [count] => 1
        )

)

我正在尝试将它们组合在一起,以便得到第三个看起来像这样的数组

Array
(
    [0] => Array
        (
            [day] => 17-3-2018
            [count] => 1
        )

    [1] => Array
        (
            [day] => 16-3-2018
        )

    [2] => Array
        (
            [day] => 15-3-2018
            [count] => 2
        )

    [3] => Array
        (
            [day] => 14-3-2018
        )
)

我已经尝试过array_merge和array_combine,但他们没有给我我想要的结果,我是PHP的初学者,所以我有点失去了尝试找出最佳解决方案。

我问过一个我现在删除的问题,这个问题有一个简化的数组,我希望这会让事情变得更容易。

我是否需要遍历每个项目并检查另一项以构建新阵列?

1 个答案:

答案 0 :(得分:2)

您可以循环第二个数组并搜索array1的平面数组 使用array_column创建平面数组。

// Create a flat day array you can search
$day= array_column($arr1, "day");


Foreach($arr2 as $val){
    // Find if day is in $arr1
    $find = array_search($val['day'], $day);
    // If day is found in $arr1 add count value
    If($find !== false) $arr1[$find]['count'] = $val['count'];

}

Var_dump($arr1);

https://3v4l.org/fQKqj