深入理解PHP的array_filter()函数: 功能、语法、示例及注意事项
目录

array_filter()是 PHP 的一个函数。它的作用是通过回调函数来过滤数组中的每个元素。在使用时,它会对数组中的每个元素进行遍历。并且将每个元素都传递给回调函数。如果回调函数返回 true,那么就会保留数组中的当前元素。反之,如果回调函数返回 false,就会删除数组中的当前元素。
函数语法如下:
array_filter 函数接受一个数组 $array、一个回调函数 $callback 以及一个可选的模式参数 $mode(默认为 0),并返回一个经过筛选后的数组。该函数会遍历数组中的每个元素,将其传递给回调函数进行判断。如果回调函数返回 true,则该元素被保留在结果数组中;如果回调函数返回 false 或 null,则该元素被过滤掉。模式参数 $mode 可以用于指定不同的筛选行为,例如 ARRAY_FILTER_USE_KEY 用于根据键进行筛选,ARRAY_FILTER_USE_BOTH 用于同时根据键和值进行筛选等。
参数:
返回值:
返回过滤后的数组。
下面是一些示例:
示例1:基本过滤
$array = [1, 2, 3, 4, 5];
// 过滤出大于3的元素
过滤后的数组 $filteredArray 是通过对数组 $array 进行过滤操作得到的,过滤的条件是通过一个匿名函数来定义的,该匿名函数的参数为 $value ,函数体内部实现了具体的过滤逻辑。
return $value > 3;
});
print_r($filteredArray);
输出的是一个数组,其中第一个元素为 4,第二个元素为 5。
// 过滤数组中的偶数
数组 $array 包含了 1、2、3、4、5、6、7、8、9 这些元素。 数组 $array 由 1 到 9 的数字组成。 1、2、3、4、5、6、7、8、9 这些数字在数组 $array 中。 数组 $array 当中有 1、2、3、4、5、6、7、8、9 这些数值。 数组 $array 是由 1 至 9 的数字所构成的。 1、2、3、4、5、6、7、8、9 这些数在数组 $array 里。 数组 $array 包含着 1、2、3、4、5、6、7、8、9 这些元素。 数组 $array 是由 1 到 9 的这些数字所形成的。 1、2、3、4、5、6、7、8、9 这些数值处于数组 $array 中。
使用 array_filter 函数对数组 $array 进行过滤操作,过滤条件是一个匿名函数,该函数接受一个参数 $value,用于判断每个元素是否满足特定条件。
return $value % 2 == 0;
});
print_r($filtered);
输出的是一个数组,其中键为 1 时对应的值为 2,键为 3 时对应的值为 4,键为 5 时对应的值为 6,键为 7 时对应的值为 8。
示例2:过滤数组中的空字符串
数组中有“apple”,有一个空字符串,有“banana”,有 null 值,有“cherry”,有 false 值,有“durian”。
使用 array_filter 函数对数组 $array 进行过滤操作,得到过滤后的结果数组 $filtered 。
print_r($filtered);
输出的是一个数组,其中包含了以下元素:apple、banana、cherry、durian 。数组的索引分别为 0、2、4、6 。
示例3:使用匿名函数
数组中有元素 'a',有元素 'b',有元素 'c',有元素 'd'。
// 过滤出以字母 'c' 开头的元素
$filteredArray = array_filter($array, function($value) {
判断字符串 $value 的开头位置是否为字符 'c',如果是则返回 true,否则返回 false,即判断 strpos($value, 'c') 的结果是否等于 0 。
});
print_r($filteredArray);
输出的是一个数组,其中索引为 2 的元素是 c,索引为 3 的元素是 d。
示例4:包括空字符串和空数组
数组 $array 包含元素 'a' 、空字符串 '' 、'b' 、空数组 [] 、'c' 。
// 过滤出非空元素
$filteredArray = array_filter($array, function($value) {
return !empty($value);
}, FILTER_INCLUDE_EMPTY);
print_r($filteredArray);
输出一个数组,其中第一个元素是 a,第二个元素是 b,第三个元素是 c 。
示例5:筛选
数组中有多个键为“id”的值,分别是 1、2、3、4、5。
$id = 3;
$filteredArray 是通过对 $array 进行过滤得到的。过滤的条件是一个匿名函数,该函数接收一个 $item 作为参数,并使用 $id 进行一些操作。这个匿名函数决定了哪些 $item 应该被保留在 $filteredArray 中,而哪些应该被过滤掉。
判断 $item['id'] 是否等于 $id ,如果相等则返回 true ,否则返回 false 。
});
使用 array_filter() 时,需注意它不会对原始数组进行改变,而是会返回一个经过过滤的新数组。同时,回调函数必须是可调用的类型,像普通函数、匿名函数、对象方法等都可以。