`array_filter()` 是 PHP 中用于过滤数组的函数。该函数会遍历数组中的每个元素,并使用指定的回调函数(或者基于元素的布尔值)来决定是否保留该元素。所有满足条件(回调返回 `true` 或者元素自身为 `true` 值)的元素会组成一个新数组并返回。不满足条件的元素会被移除。
### 基本用法
如果你提供一个回调函数给 `array_filter()`,它会使用该回调来测试每个元素。否则,它会简单地检查每个元素是否为布尔 `true` 值。
#### 示例 1:使用默认的布尔值过滤
假设我们有以下数组:
```php
$numbers = [1, 2, 0, -1, 5];
$evenNumbers = array_filter($numbers); // 仅保留值为 true 的元素(非零值)
print_r($evenNumbers); // 输出:[1, 2, 5]
```
在这个例子中,`array_filter()` 默认会移除数组中所有为 `false` 的元素(在这种情况下是 `0` 和 `-1`)。因为我们没有提供一个回调函数,所以该函数只是检查每个元素是否为 `true` 值(除了 `false`, `null`, `0`, 空字符串等)。
#### 示例 2:使用自定义回调函数过滤数组
假设我们想从数组中筛选出所有的偶数:
```php
function isEven($number) {
return $number % 2 == 0; // 返回 true 如果数字是偶数,否则返回 false
}
$numbers = [1, 2, 3, 4, 5];
$evenNumbers = array_filter($numbers, "isEven"); // 使用自定义的 isEven 函数过滤数组中的偶数
print_r($evenNumbers); // 输出:[2, 4]
```
在这个例子中,我们提供了一个自定义的回调函数 `isEven()` 来测试数组中的每个元素是否为偶数。只有满足这个条件的元素才会被保留在新数组中。不满足条件的元素会被移除。
### 总结
`array_filter()` 函数在 PHP 中是一个非常实用的函数,可以用于筛选和过滤数组中的元素。它支持默认过滤和自定义过滤,使你可以根据需要灵活地处理数组数据。