次のように2つの配列がある場合:
$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);
君たちありがとう!!!!
ありがとう。
よろしくジャック