PHP函数使用指南:array_filter()用法详解
array_filter()函数是PHP中非常实用的数组函数之一。它的作用是对数组进行筛选,返回符合条件的元素,具体使用方法和注意事项如下。
使用方法:
1. 基本用法:
语法:array_filter(array $array [, callable $callback [, int $flag = 0]])
参数说明:
$array:要筛选的数组;
$callback:可选参数,用于设置筛选条件的回调函数,如果不设置,将返回数组中所有不为 FALSE 的值;
$flag:可选参数,指定 $array 中的元素在 $callback 函数中的传递方式,有以下 3 种取值:
1. 默认为 0,表示按值传递;
2. 使用 ARRAY_FILTER_USE_KEY 常量,表示按键名传递;
3. 使用 ARRAY_FILTER_USE_BOTH 常量,表示同时按键名和键值传递。
示例代码:
$arr = array(1, 2, 3, 4, 5, 6);
$arr2 = array_filter($arr, function($var){
//返回值为 true 的值将被保留
return $var % 2 == 0;
});
print_r($arr2); // 输出 Array ( [1] => 2 [3] => 4 [5] => 6 )
2. 使用类方法:
语法:array_filter(array $array [, string $classname::methodname [, int $flag = 0 [, mixed $method_argument = NULL]]])
参数说明:
$array:要筛选的数组;
$classname:必须为一个类名,用于设置筛选条件的类方法所在的类;
$methodname:必须为类方法的名字,用于设置筛选条件的类方法;
$flag:可选参数,指定 $array 中的元素在 $callback 函数中的传递方式;
$method_argument:可选参数,传递到类方法中的第二个参数。
示例代码:
class FilterNumber{
public static function isOdd($var){
return !($var % 2 == 0);
}
}
$arr = array(1, 2, 3, 4, 5, 6);
$arr2 = array_filter($arr, 'FilterNumber::isOdd');
print_r($arr2); // 输出 Array ( [0] => 1 [2] => 3 [4] => 5 )
注意事项:
1. 回调函数需要返回一个布尔值,返回 true 则保留该元素,返回 false 则去除该元素。
2. 回调函数可以使用的参数如下:
1. 使用值:$value;
2. 使用键名:$key;
3. 可选参数:$flag(仅在使用 ARRAY_FILTER_USE_BOTH 时可用)。
3. 回调函数可以通过参数传递到类方法中。
4. array_filter() 不会修改原数组,而是返回过滤后的新数组。
5. array_filter() 不保留原数组的键名,返回的新数组从 0 开始编号。
6. 保存原数组中的键名,需要使用 ARRAY_FILTER_USE_KEY 和 ARRAY_FILTER_USE_BOTH 这两个 flag。
总结:
array_filter() 函数非常实用,可以方便地将不符合条件的元素过滤掉,留下符合条件的元素,应用场景非常广泛。在使用时需要注意回调函数的编写和设置 flag 的取值,在此基础上可以灵活地进行设计与应用。
