2016-02-29 60 views
1

我有问题时,试图在PHP.For例如合并两个数组合并两个数组:如何在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

从哪里得到数据?数据库? –

+0

是的,我从数据库中获取数据。输出是类似于我的文章 –

+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你的输出就会再看看like this

+0

完成了,非常感谢! –