📜  php array_filter - PHP (1)

📅  最后修改于: 2023-12-03 15:03:34.391000             🧑  作者: Mango

PHP array_filter

PHP中的array_filter函数可以对一个数组使用自定义的过滤器函数进行过滤,并返回过滤后的新数组。该函数提供了非常方便的功能,可以大大简化数组操作的代码。

语法
array_filter ( array $array [, callable $callback [, int $flag ]] ) : array
  • $array:必需。要过滤的数组。
  • $callback:可选。自定义的过滤器函数。
  • $flag:可选。用于改变函数执行的行为。
参数
$callback

如果传递了$callback参数,则该函数将使用该回调函数进行过滤。回调函数应该返回一个布尔值,指示该元素是否应该包含在返回的新数组中。 回调函数的格式如下:

bool callback ( mixed $value )
  • $value:必需。要过滤的数组元素。
$flag

$flag参数可以传递以下值:

  • ARRAY_FILTER_USE_KEY:仅传递键名作为参数进行过滤,而不是键值。
  • ARRAY_FILTER_USE_BOTH:传递键名和键值作为参数进行过滤。
示例

假设有一个名为$numbers的数组,我们想要过滤出其中所有的偶数。可以使用以下回调函数进行过滤:

$numbers = [1, 2, 3, 4, 5, 6];

$even_numbers = array_filter($numbers, function($number) {
    return $number % 2 == 0;
});

print_r($even_numbers); // 输出 [2, 4, 6]

另外,如果要将回调函数作为类的方法来使用,则必须在回调函数中使用$this关键字,如下所示:

class Filter {
    public function filter_odd($value) {
        return ($value % 2) == 1;
    }
}

$filter = new Filter();
$numbers = [1, 2, 3, 4, 5, 6];

$odd_numbers = array_filter($numbers, [$filter, 'filter_odd']);

print_r($odd_numbers); // 输出 [1, 3, 5]
注意事项
  • array_filter函数不会改变原数组。
  • 如果$callback参数为空,则该函数将删除数组中所有等效于false 的值(例如0null''等)。
  • 如果数组中所有元素都过滤掉了,则返回一个空数组。