【发布时间】:2012-10-03 16:37:27
【问题描述】:
如果我有两个数组如下:
$array1 = array(array('id'=>11,'name'=>'Name1'),array('id'=>22,'name'=>'Name2'), array('id'=>33,'name'=>'Name3'),array('id'=>44,'name'=>'Name4'),array('id'=>55,'name'=>'Name5'));
$array2 = array(array('id'=>22,'name'=>'Name2'),array('id'=>55,'name'=>'Name5'));
我的预期结果,array2 应该总是在开头:
$newarray = array(array('id'=>22,'name'=>'Name2'),array('id'=>55,'name'=>'Name5'), array('id'=>11,'name'=>'Name1'), array('id'=>33,'name'=>'Name3'),array('id'=>44,'name'=>'Name4'));
My current solution is using two for loops:
foreach($array2 as $Key2 => $Value2) {
foreach($array1 as $Key1 => $Value1){
if($Value1['id'] != $Value2['id']) {
//push array
}
}
}
编辑: 结果“$newarray”不应包含来自 array1 的重复 ID。
但我正在寻找一种更快、更简单的解决方案。
解决方案:
$a1 = 数组(); foreach ($array1 as $v) $a1[$v['uuid']] = $v;
$a2 = 数组(); foreach ($array2 as $v) $a2[$v['uuid']] = $v;
$filtered = array_values(array_diff_key($a1, $a2)); //print_r($filtered);
$newarray = array_merge($array2, $filtered);
谢谢大家!!!!
谢谢。
问候杰克
【问题讨论】:
-
array_merge php.net/manual/en/function.array-merge.php
-
你想合并数组但不想重复 id 对吗?
-
是的,我想合并 hte 数组但没有重复 id,并且 array1 必须始终位于顶部。
标签: php multidimensional-array