合并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数组的主要内容,如果未能解决你的问题,请参考以下文章