给你两个分别有 5000 个元素的数组,计算他们的差集
方案1
循环第一个数组 ,判断item是否在第二个数组里,如果在,则unset掉这个键,最后剩下的数组就是差集
function array_diff($array_1, $array_2) {
foreach ($array_1 as $key => $item) {
if (in_array($item, $array_2, true)) {
unset($array_1[$key]);
}
}
return $array_1;
}
方案2 (最优 效率最快)
将第二个数组进行键值反转,循环遍历第一个数组,用item当做key 判断数组2中是否存在,存在则unset掉数组1的这个key,最后剩下的数组就是差集
function array_diff($array_1, $array_2) {
$array_2 = array_flip($array_2);
foreach ($array_1 as $key => $item) {
if (isset($array_2[$item])) {
unset($array_1[$key]);
}
}
return $array_1;
}