一、什么是数组的filter方法?
在PHP中,数组可以看做是一种特殊的数据类型,可用于存储多个值。而filter方法,则是PHP提供的一种数组筛选过滤方法,可以根据指定的条件过滤掉一些值,从而得到需要的结果。 使用filter方法前,必须要定义一个回调函数,作为过滤条件。该回调函数有以下两个可选参数:
- 第一个参数表示数组中当前正在被过滤的元素值
- 第二个参数表示当前元素的键名(可选)
然后,将回调函数传递给
array_filter()
函数,即可对数组进行过滤。
二、array_filter()函数的用法
array_filter()
函数是PHP中用于筛选数组元素的函数,其用法如下:
$result = array_filter($array, $callback);
其中,$array
是要过滤的数组,$callback
是一个函数,用于定义过滤条件。$result
为处理后的结果数组。
例如,要筛选掉数组中的负数,可以这样写:
//定义回调函数
function positive($var){
return $var >= 0;
}
//定义数组
$arr = array(2, -5, 8, -3, 7);
//使用array_filter()函数进行过滤
$result = array_filter($arr, "positive");
//输出结果
print_r($result);
输出结果为:
Array ( [0] => 2 [2] => 8 [4] => 7 )
可以看到,过滤掉了数组中的-5和-3两个负数。
三、数组过滤的实际应用
1.过滤掉数组中的空值
有时候,我们需要过滤掉数组中的空值,可以这样写:
//定义回调函数
function not_empty($var){
return !empty($var);
}
//定义数组
$arr = array('hello', '', 'world', ' ', null, '!', array());
//使用array_filter()函数进行过滤
$result = array_filter($arr, 'not_empty');
//输出结果
print_r($result);
输出结果为:
Array ( [0] => hello [2] => world [5] => ! )
该回调函数使用了PHP中的empty函数,用于判断当前元素是否为空。
2.过滤掉数组中不符合规则的元素
有时候,我们需要将数组中符合特定规则的元素提取出来,可以这样写:
//定义回调函数
function start_with_a($var){
return (substr($var, 0, 1) === 'a');
}
//定义数组
$arr = array('apple', 'banana', 'pear', 'orange', 'apricot');
//使用array_filter()函数进行过滤
$result = array_filter($arr, 'start_with_a');
//输出结果
print_r($result);
输出结果为:
Array ( [0] => apple [4] => apricot )
该回调函数使用了substr函数,用于判断当前元素的第一个字符是否为'a'。
3.过滤掉数组中的重复元素
有时候,我们需要过滤掉数组中的重复元素,可以这样写:
//定义数组
$arr = array(1, 2, 3, 3, 2, 4, 1, 5);
//使用array_filter()函数进行过滤
$result = array_filter($arr, function ($key) use (&$arr) {
$index = array_keys($arr, $key);
return $index[0] == array_search($key, $arr);
});
//输出结果
print_r($result);
输出结果为:
Array ( [0] => 1 [1] => 2 [2] => 3 [5] => 4 [7] => 5 )
该回调函数使用了array_keys
和array_search
函数,用于查找数组中指定元素的键名。
四、总结
利用PHP中数组的filter方法进行数据过滤,可以大大简化代码,提高开发效率。它可以应用于很多场景,如过滤掉数组中的空值、不符合规则的元素、重复元素等。需要注意的是,回调函数中返回值为true的元素会被保留,返回值为false的会被过滤掉。