array_filter
和 array_intersect
是 PHP 中用于处理数组的两个函数,它们可以通过匹配值来过滤数组。
array_filter
函数可以遍历数组中的每个元素,并使用回调函数来决定是否保留该元素。如果回调函数返回 true
,则当前元素会被保留在结果数组中;如果返回 false
,则会被过滤掉。
array_filter
使用 is_null
作为回调函数,过滤掉所有 null
值。假设有两个数组 $arr1
和 $arr2
,我们想要过滤出 $arr1
中存在于 $arr2
中的元素:
$arr1 = [1, 2, 3, 4, 5];
$arr2 = [3, 4, 5, 6, 7];
$result = array_filter($arr1, function ($value) use ($arr2) {
return in_array($value, $arr2);
});
print_r($result); // 输出: Array ( [2] => 3 [3] => 4 [4] => 5 )
array_intersect
函数用于比较两个或多个数组,并返回一个包含所有输入数组共有的元素的新数组。
array_intersect
默认比较数组的值。__toString
方法进行比较。使用上面的 $arr1
和 $arr2
数组,我们可以找出它们共有的元素:
$arr1 = [1, 2, 3, 4, 5];
$arr2 = [3, 4, 5, 6, 7];
$result = array_intersect($arr1, $arr2);
print_r($result); // 输出: Array ( [2] => 3 [3] => 4 [4] => 5 )
array_filter
和 array_intersect
的结果不同?array_filter
是通过回调函数逐个检查数组元素来决定是否保留,而 array_intersect
是直接比较两个数组的元素来找出交集。array_filter
;如果只需要找出两个数组的交集,使用 array_intersect
。希望以上信息能帮助你更好地理解和使用 array_filter
和 array_intersect
函数。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云