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

PHP函数之array_filter详解

发布时间:2023-07-06 04:50:33

array_filter() 函数用于过滤数组中的元素,并返回一个新的数组。

语法

array_filter(array,function,flag)

参数

- array:必需,要过滤的数组。

- function:可选,规定的函数将被用于对数组元素进行过滤。如果没有提供这个参数,则对数组的每个元素应用默认的过滤函数。

- flag:可选,用于改变如何比较元素/搜索值的行为。可用参数有:

- ARRAY_FILTER_USE_KEY - 默认。使用键名来比较

- ARRAY_FILTER_USE_BOTH - 使用键名和键值来比较

- ARRAY_FILTER_USE_BOTH - 使用键名和键值来比较

返回值

返回一个过滤后的数组。

说明

array_filter() 函数使用回调函数对给定的数组的每个元素进行过滤。如果回调函数返回 true,则数组的当前值被包含在返回的结果数组中,如果返回 false,则数组的当前值将被过滤掉。

示例

<?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 "Odd :
";
print_r(array_filter($array1,"odd"));
echo "Even:
";
print_r(array_filter($array2,"even"));
?>

输出结果:

Odd:
Array
(
    [c]=>3
    [e]=>5
)
Even:
Array
(
    [0]=>6
    [2]=>8
    [4]=>10
    [6]=>12
)

在上面的例子中,odd() 函数被用作回调函数,对数组 array1 中的每个元素进行过滤。因为 odd() 函数返回 true 的值将会包含在结果数组中,所以最后的结果数组中只包含了奇数。

同样的,even() 函数被用作回调函数,对数组 array2 中的每个元素进行过滤。因为 even() 函数返回 true 的值将会包含在结果数组中,所以最后的结果数组中只包含了偶数。