PHP函数之array_filter()的用法介绍
发布时间:2023-06-14 00:55:20
PHP是一门强大的编程语言,它提供了许多数组操作的函数,其中一个重要的函数就是array_filter()。这个函数可以对数组进行过滤,返回一个新的数组,只包含符合条件的元素。
array_filter()函数的用法非常简单,只需要两个参数: 个参数是要过滤的数组,第二个参数是回调函数(可以是一个函数名或匿名函数),用来定义过滤条件。
下面我们来看一下具体的使用方法:
1. 使用函数名作为回调函数
如果要使用函数名作为回调函数,需要创建一个函数来定义过滤条件。这个函数接收一个参数,代表数组中的每个元素,然后返回一个布尔值。
例如,我们有一个数组,数组中的元素都是数字,我们想过滤掉所有小于等于5的数字。可以这样写:
function filterNum($num)
{
return $num > 5;
}
$nums = array(1, 6, 3, 8, 2, 9);
$filteredNums = array_filter($nums, "filterNum");
print_r($filteredNums); // 输出:Array ( [1] => 6 [3] => 8 [5] => 9 )
2. 使用匿名函数作为回调函数
如果不想创建一个函数来定义过滤条件,还可以使用匿名函数。匿名函数与普通函数类似,只是没有函数名。
例如,我们通过匿名函数来过滤掉数组中小于等于5的数字,可以这样写:
$nums = array(1, 6, 3, 8, 2, 9);
$filteredNums = array_filter($nums, function($num) {
return $num > 5;
});
print_r($filteredNums); // 输出:Array ( [1] => 6 [3] => 8 [5] => 9 )
3. 可选参数
除了前两个必选参数,array_filter()函数还提供了第三个可选参数,用来指定回调函数的第二个参数。这个参数代表数组中的每个元素的键名,如果指定了这个参数,回调函数就会接收两个参数:数组元素和键名。
例如,我们有一个关联数组,数组中的元素都是字符串,我们希望只返回长度大于等于5的字符串,同时将这些字符串的键名保留。可以这样写:
function filterLongString($value, $key)
{
return strlen($value) >= 5;
}
$words = array(
"apple" => "苹果",
"banana" => "香蕉",
"cherry" => "樱桃",
"dragonfruit" => "火龙果",
"elderberry" => "接骨木果"
);
$filteredWords = array_filter($words, "filterLongString", ARRAY_FILTER_USE_BOTH);
print_r($filteredWords); // 输出:Array ( [dragonfruit] => 火龙果 [elderberry] => 接骨木果 )
在这个例子中,我们使用了第三个可选参数ARRAY_FILTER_USE_BOTH,指定了回调函数的第二个参数,这样回调函数就可以接收数组元素和键名了。
array_filter()函数是PHP数组处理中非常常用的一个函数,可以轻松地对数组进行过滤,非常方便。以上介绍的是该函数的基本用法,希望能对初学者有所帮助。
