尝试在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
),
)
那么,我能做什么呢?
答案 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。