数组函数

PHP array_filter() 函数

主题:PHP 数组参考上一页|下一页

说明

array_filter() 函数使用回调函数过滤数组的元素。

下表总结了该函数的技术细节。

返回值: Returns the filtered array.
变更日志: PHP 5.6.0 中添加了可选的 flag 参数
版本: PHP 4.0.6+

语法

array_filter() 函数的基本语法如下:

array_filter(array, callback, flag);

下面的例子展示了 array_filter() 函数的作用。

<?php
// 定义回调函数
function even($num){
    if($num % 2 == 0){
        return true;
    }
}

// 样本数组
$numbers = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

// 过滤数字数组
$result = array_filter($numbers, "even");
print_r($result);
?>

参数

array_filter() 函数接受以下参数。

参数 说明
array 必填。 指定要过滤的数组。
callback 可选。 指定回调函数的名称。
flag

可选。 指定将哪些参数发送到回调:

  • ARRAY_FILTER_USE_KEY - 将键作为唯一参数传递给回调而不是值。
  • ARRAY_FILTER_USE_BOTH - 将值和键作为参数传递给回调函数,而不是值。
默认为 0,它将值作为唯一参数传递给回调函数。

更多示例

这里有更多示例展示了 array_filter() 函数的实际工作原理:

在以下示例中,此函数使用 flag 参数从 numbers 数组中返回键大于字符"b"的所有值:

<?php
// 样本数组
$numbers = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

// 使用键过滤数字数组
$result = array_filter($numbers, function($key){
    return $key > "b";
}, ARRAY_FILTER_USE_KEY);
print_r($result);
?>

在以下示例中,此函数返回其键大于"b"的偶数值。

<?php
// 样本数组
$numbers = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

// 使用键和值过滤数字数组
$result = array_filter($numbers, function($value, $key){
    return $key > "b" && !($value & 1);
}, ARRAY_FILTER_USE_BOTH);
print_r($result);
?>
Advertisements