【问题标题】:PHP combine array with matching itemsPHP将数组与匹配项组合起来
【发布时间】:2018-03-17 17:46:38
【问题描述】:

我有 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 的初学者,所以我在寻找最佳解决方案时有点迷失。

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

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

【问题讨论】:

标签: php arrays multidimensional-array


【解决方案1】:

您可以循环第二个数组并搜索 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

【讨论】:

  • 太棒了,这正是我想要的。感谢您花时间回答
猜你喜欢
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多