欢迎访问宙启技术站
智能推送

PHP函数使用指南:array_filter()用法详解

发布时间:2023-06-12 17:42:47

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 的取值,在此基础上可以灵活地进行设计与应用。