PHP array_filter 数组函数



  • 定义和用法

    array_filter - 用回调函数过滤数组中的单元
  • 版本支持

    PHP4 PHP5 PHP7
    V4.0.6(含)+支持 支持 支持
    V5.6.0 添加可选的参数 flag,以及常量 ARRAY_FILTER_USE_KEYARRAY_FILTER_USE_BOTH
  • 语法

    array_filter (array $array [, callable $callback [, int $flag = 0 ]])   
    
    
    依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。
  • 参数

    参数 必需的 描述
    array 要循环的数组
    callback 使用的回调函数,如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的条目。
    flag 决定callback接收的参数形式:
    • ARRAY_FILTER_USE_KEY - callback接受键名作为的唯一参数
    • ARRAY_FILTER_USE_BOTH - callback同时接受键名和键值
  • 返回值

    返回过滤后的数组。
    用户不应在回调函数中修改数组本身。例如增加/删除单元或者对 array_filter() 正在作用的数组进行 unset。如果数组改变了,此函数的行为将不可预测。
  • 示例

    <?php
    function odd($var)
    {
            // 返回输入整数是否为奇数
            return($var & 1);
    }
    
    function even($var)
    {
            // 返回输入整数是否为偶数
            return(!($var & 1));
    }
    
    $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
    $array2 = array(6, 7, 8, 9, 10, 11, 12);
    
    echo "奇数 :<br/>";
    print_r(array_filter($array1, "odd"));
    echo "偶数 :<br/>";
    print_r(array_filter($array2, "even"));
    ?>
    
    
  • 相关函数

    array_map() - 为数组的每个元素应用回调函数
    array_reduce() - 用回调函数迭代地将数组简化为单一的值
    array_walk() - 使用用户自定义函数对数组中的每个元素做回调处理