合并mysql数组

Posted

技术标签:

【中文标题】合并mysql数组【英文标题】:Combine mysql arrays 【发布时间】:2014-05-10 22:53:19 【问题描述】:

我有两个数组

array1

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

array2

  [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 。但我不知道我在哪里做错了。请帮帮我

【问题讨论】:

我认为这只是 php 问题而不是 mysql/ @MahdiParsa.. 我只从 mysql 查询中得到这个结果...对不起.. 你能帮帮我吗.. 可能重复:***.com/questions/13469803/… 这可以用php来完成,但是加入2个查询可能更好,你能分享一下吗? 【参考方案1】:

好吧,如果您找不到与您的特定情况相匹配的内置函数(并且会有很多这样的情况),那么也许您必须自己尝试?

通过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 按键排序:

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)

【讨论】:

唯一真正符合他要求的答案。 +1。【参考方案2】:

我会使用array_merge

如下图..

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

然后使用array_unique 获取唯一值。

【讨论】:

感谢您的回复。我试过了,但没有工作

以上是关于合并mysql数组的主要内容,如果未能解决你的问题,请参考以下文章

从循环查询 PHP MYSQL JSON 合并数组

Pandas:合并数据框并将多个连接值合并到一个数组中

Matlab两个一维数组合并为一个数组?

Python进行数组合并的方法

java 合并排序数组 - 合并两个排序的数组

java数组的合并问题