我试图选择 2(Two) 数组之间的差异。是的,我有一个使用循环的解决方案。但我认为这是一个大问题,因为使用太多循环会使过程变慢。我问是否有替代方法或简单方法来处理相同的输出。这是我的代码$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个赞
不同之处在于,大多数事情都会使用某种循环,即使您在代码中看不到循环,它也可能在内部完成。
此代码使用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 关注
- 122 浏览
添加回答
举报
0/150
提交
取消