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

PHP函数库解析:array_filter()

发布时间:2023-06-22 10:25:08

PHP中有很多实用的函数,array_filter()就是其中之一。该函数可以过滤一个数组,将不符合条件的元素从数组中移除,然后返回一个新的数组。它的语法非常简单:

array_filter(array $array [, callable $callback [, int $flag = 0 ]]): array

该函数的 个参数是要过滤的数组。第二个参数是可选的回调函数,用于指定过滤条件。如果没有提供回调函数,则默认将删除值为false的元素(即false、0、""、null以及空数组)。第三个参数也是可选的,用于指定flag的模式。flag可以有三种不同的值:

- ARRAY_FILTER_USE_KEY: 使用键名作为回调函数的参数

- ARRAY_FILTER_USE_BOTH: 使用键名和键值作为回调函数的参数

- ARRAY_FILTER_USE_VALUE: 使用键值作为回调函数的参数

接下来让我们看看一些使用array_filter()的示例。

例1:过滤掉数组中的空值

$array = array("a", "b", "", "c", null, false);
$result = array_filter($array);
print_r($result);

输出:

Array
(
    [0] => a
    [1] => b
    [3] => c
)

在这个例子中,我们创建了一个包含空值的数组。然后使用array_filter()过滤掉了所有空值,仅返回非空值的元素。因此,结果是一个新的数组,其中只包含非空值的元素。

例2:使用回调函数过滤数组

$array = array(1, 2, 3, 4, 5);
$result = array_filter($array, function($value) {
    return $value > 3;
});
print_r($result);

输出:

Array
(
    [3] => 4
    [4] => 5
)

在这个例子中,我们创建了一个包含数字的数组。然后使用回调函数过滤数组,仅返回那些值大于3的元素。因此,结果是一个新的数组,其中只包含大于3的元素。

例3:使用回调函数过滤数组并保留键名

$array = array("a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5);
$result = array_filter($array, function($value, $key) {
    return $key > "c";
}, ARRAY_FILTER_USE_BOTH);
print_r($result);

输出:

Array
(
    [d] => 4
    [e] => 5
)

在这个例子中,我们创建了一个包含键值对的数组。然后使用回调函数过滤数组,仅返回那些键大于"c"的元素,由于我们开启了使用键名的flag,所以回调函数接收两个参数,分别是值和键名。因此,结果是一个新的数组,其中仅包含满足条件的键值对。