在 PHP 中,array_filter() 是一个非常实用的函数,可以用于对数组中的元素进行筛选,只保留符合条件的元素。它通常与回调函数配合使用,而在很多实际应用中,使用全局函数(如 is_numeric)来筛选数据,是一种简洁而高效的方式。
本文将通过示例来演示如何使用 array_filter() 搭配 is_numeric 来筛选数组中的数字元素。
array_filter(array $array, ?callable $callback = null, int $mode = 0): array
$array:输入数组。
$callback:用于判断每个元素是否保留的回调函数。
$mode:过滤模式,可选。
如果不提供回调函数,array_filter() 默认会去除所有等价于 false 的值(如 false、0、""、null 等)。
$items = ['apple', 42, '123', null, 0, 'banana', 3.14, '0', true];
$numericItems = array_filter($items, 'is_numeric');
print_r($numericItems);
Array
(
[1] => 42
[2] => 123
[6] => 3.14
[7] => 0
)
可以看到,array_filter() 保留了数组中所有通过 is_numeric 判断为数值的元素。这包括整数、浮点数、数字字符串(如 '123')、甚至是字符串 '0'。
你也可以将 is_numeric 搭配其他条件使用,例如:
$items = ['apple', 42, '123', null, 0, 'banana', 3.14, '0', true];
// 只保留大于 10 的数值
$filtered = array_filter($items, function ($item) {
return is_numeric($item) && $item > 10;
});
print_r($filtered);
Array
(
[1] => 42
[2] => 123
)
举个例子,假设你的网站(如 https://m66.net/form-handler.php)接收到一个包含用户输入的数据数组,其中可能包含文本、空值或者数字。你希望只提取出数字来进行统计或验证,这时就可以用 array_filter() 搭配 is_numeric() 快速完成这个任务。
array_filter() 可用于对数组元素进行筛选。
搭配全局函数如 is_numeric 使用时非常简洁高效。
可以通过匿名函数进一步组合逻辑进行复杂筛选。
掌握好这一技巧,可以让你的 PHP 代码在数据处理方面更加灵活和强大。