2014-03-31 60 views
0

我有两个数组合并MySQL的阵列

阵列1

[0]=>array(
    ['user']=>'name1', 
    ['age']=>'28'  
), 
    [1]=>array(
    ['user']=>'name2', 
    ['age']=>'58'  
), 
    [2]=>array(
    ['user']=>'name3', 
    ['age']=>'15'  
) 

数组2

[0]=>array(
    ['user']=>'name3', 
    ['sex']=>'male'  
), 
    [1]=>array(
    ['user']=>'name1', 
    ['sex']=>'male'  
), 
    [2]=>array(
    ['user']=>'name2', 
    ['sex']=>'female' 
) 

期待结果

[0]=>array(
    ['user']=>'name1', 
    ['age']=>'28', 
    ['sex']=>'male'  
), 
    [1]=>array(
    ['user']=>'name2', 
    ['age']=>'58', 
    ['sex']=>'male'  
), 
    [2]=>array(
    ['user']=>'name3', 
    ['age']=>'15', 
    ['sex']=>'female' 
) 

我已经尝试了很多方法array_merge,array_combine。但我不知道我犯了什么错误。请帮我

+0

我认为这只是PHP的问题不是在mysql/ –

+0

@ MahdiParsa ..我从mysql查询得到这个结果只...对不起。你能帮我吗.. – PonrajPaul

+0

可能的重复:http://stackoverflow.com/questions/13469803/php-merging-two-array-into- one-array-also-remove-duplicates –

回答

2

那么,如果你找不到内置函数来匹配你的特定情况(并且会有很多这样的情况),那么你可能需要自己试试?

name键映射阵列和填充一个新问题:

<?php 
$arr1 =array (0=>array(
    'user'=>'name1', 
    'age'=>'28'  
), 
    1=>array(
    'user'=>'name2', 
    'age'=>'58'  
), 
    2=>array(
    'user'=>'name3', 
    'age'=>'15'  
) 
); 

$arr2 =array (0=>array(
    'user'=>'name3', 
    'sex'=>'male'  
), 
    1=>array(
    'user'=>'name1', 
    'sex'=>'male'  
), 
    2=>array(
    'user'=>'name2', 
    'sex'=>'female' 
) 
); 

$result = array(); 
foreach ($arr1 as $key => $value) { 
    foreach ($arr2 as $k => $v) { 
     if($value['user'] == $v['user']) { 
      $result[$k]['user'] = $arr1[$k]['user']; 
      $result[$k]['age'] = $arr1[$k]['age']; 
      $result[$k]['sex'] = $arr2[$k]['sex']; 
     } 
    } 
} 

var_dump($result); 

array (size=3) 
    1 => 
    array (size=3) 
     'user' => string 'name2' (length=5) 
     'age' => string '58' (length=2) 
     'sex' => string 'male' (length=4) 
    2 => 
    array (size=3) 
     'user' => string 'name3' (length=5) 
     'age' => string '15' (length=2) 
     'sex' => string 'female' (length=6) 
    0 => 
    array (size=3) 
     'user' => string 'name1' (length=5) 
     'age' => string '28' (length=2) 
     'sex' => string 'male' (length=4) 

您可以使用排序键排序:

sort($result); 
var_dump($result); 

array (size=3) 
    0 => 
    array (size=3) 
     'user' => string 'name1' (length=5) 
     'age' => string '28' (length=2) 
     'sex' => string 'male' (length=4) 
    1 => 
    array (size=3) 
     'user' => string 'name2' (length=5) 
     'age' => string '58' (length=2) 
     'sex' => string 'male' (length=4) 
    2 => 
    array (size=3) 
     'user' => string 'name3' (length=5) 
     'age' => string '15' (length=2) 
     'sex' => string 'female' (length=6) 
+0

唯一的答案,实际上做他所要求的。 +1。 – Bryan

+0

其工作很好..感谢很多老兄。 – PonrajPaul

-1

我会用array_merge

像下面..

$result = array_merge($array1, $array2); 
print_r($result); 

然后使用array_unique获得独特的价值。

+0

感谢您的回复。我试过但不工作 – PonrajPaul