如何在PHP中合并两个数组

时间:2016-02-29 01:44:27

标签: php arrays

尝试在PHP中合并两个数组时遇到问题。例如:

$array1 = Array
(
    [0] => stdClass Object
        (
            [user_id] => 1
            [count] => 6.5
        )
)

和数组二遵循:

 $array2 = Array
    (
        [0] => stdClass Object
            (
                [name] => abc
                [user_id] => 1
            ),
        [1] => stdClass Object
        (
            [name] => xyz
            [user_id] => 2
        ),
    )

我想合并上面的两个数组:

$array3 = Array
(
    [0] => stdClass Object
        (
            [name] => abc
            [user_id] => 1
            [count] => 6.5
        ),
    [1] => stdClass Object
    (
        [name] => xyz
        [user_id] => 2
        [count] => 0 //set default = 0 if not exist count
    ),
)

那么,我能做什么呢?

1 个答案:

答案 0 :(得分:1)

如果这些数据来自数据库,那么实现结果的最简单方法就是在数据库查询中使用连接。

然而 - 在这里你可以用PHP做到这一点:

首先,您要将$array1重新映射为用户ID作为其密钥。这样您就可以避免在循环中嵌套循环来查找计数,并且可以通过两个数组中都存在的用户ID立即引用它:

// Re-map keys for array 1 so you don't have to loop it every time
$temp = array();
foreach ($array1 as $key => $values) {
    $temp[$values->user_id] = $values;
}
$array1 = $temp

Here's an example $array1在您完成此操作后的样子。

接下来,根据$array3构建$array2 count,添加$array1 // Construct your output array $array3 = array(); foreach ($array2 as $values) { $values->count = array_key_exists($values->user_id, $array1) ? $array1[$values->user_id]->count : 0; $array3[] = $values; } (如果存在),否则默认分配为零:

$array3

{{1}}的输出会显示like this