我試圖選擇 2(Two) 數組之間的差異。是的,我有一個使用循環(huán)的解決方案。但我認為這是一個大問題,因為使用太多循環(huán)會使過程變慢。我問是否有替代方法或簡單方法來處理相同的輸出。這是我的代碼$unique = [];$first_array = [["SERIAL_NUMBER" => "1"]];$second_array = [["SERIAL_NUMBER" => "1"],["SERIAL_NUMBER" => "2"]];foreach ($second_array as $second) { foreach($first_array as $first) { if($second['SERIAL_NUMBER'] == $first['SERIAL_NUMBER']) { continue 2; } } $unique[] = $second;}foreach ($first_array as $first) { foreach($second_array as $second) { if($first['SERIAL_NUMBER'] == $second['SERIAL_NUMBER']) { continue 2; } } $unique[] = $first;}echo json_encode($unique);結果將是 2(two) 數組的差值。PS:這是基于多維數組的特定鍵(SERIAL_NUMBER)[{"SERIAL_NUMBER":"2"}]
1 回答

富國滬深
TA貢獻1790條經驗 獲得超9個贊
不同之處在于,大多數事情都會使用某種循環(huán),即使您在代碼中看不到循環(huán),它也可能在內部完成。
此代碼使用array_udiff(), 主要是為了簡化代碼,而且因為它是一個多維數組 - 您不能只使用array_diff(). 該函數只是比較每個元素的 SERIAL_NUMBER 值。
這在每個方向上完成一次(1 => 2 和 2 => 1)然后合并結果......
function udiffCompare($a, $b)
{
return $a['SERIAL_NUMBER'] <=> $b['SERIAL_NUMBER'];
}
$arrdiff1 = array_udiff($first_array, $second_array, 'udiffCompare');
$arrdiff2 = array_udiff($second_array, $first_array, 'udiffCompare');
$difference = array_merge($arrdiff1, $arrdiff2);
- 1 回答
- 0 關注
- 177 瀏覽
添加回答
舉報
0/150
提交
取消