当前位置: 首页> 最新文章列表> array_filter() 搭配全局函数如 is_numeric 使用

array_filter() 搭配全局函数如 is_numeric 使用

M66 2025-06-03

在 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 的值(如 false0""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 代码在数据处理方面更加灵活和强大。