📅  最后修改于: 2023-12-03 15:03:34.391000             🧑  作者: Mango
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
的值(例如0
,null
,''
等)。