如果我有两个数组如下:
$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);
感谢你们!!!!
谢谢。
问候杰克