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,所以回调函数接收两个参数,分别是值和键名。因此,结果是一个新的数组,其中仅包含满足条件的键值对。
