PHP array_filter() 函数详解

定义

array_filter - 用回调函数过滤数组中的元素


描述

array_filter ( array $array [, callable $callback [, int $flag = 0 ]] ) : array

依次将 array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 array 数组的当前值会被包含在返回的结果数组中。
数组的键名保留不变。
如果没有提供 callback 函数, 将删除 array 中所有等值为 FALSE 的元素。
参数 flag 决定callback接收的参数形式:
ARRAY_FILTER_USE_KEY - 接受键名作为的唯一参数,整型 1
ARRAY_FILTER_USE_BOTH - 同时接受键名和键值,整型 2
两个系统预定义常量,可通过 get_defined_constants 查看。


示例一

<?php
  function even($var)
  {
      // returns whether the input integer is even
      return(!($var & 1));
  }
  $array = array(6, 7, 8, 9, 10, 11, 12);

  echo "Even:\n";
  print_r(array_filter($array, "even"));
?>

将输出:

Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)

示例二

不使用回调函数


<?php
  $entry = array(
               0 => 'foo',
               1 => false,
               2 => -1,
               3 => null,
               4 => ''
            );
  print_r(array_filter($entry));
?>

将输出:

Array
(
    [0] => foo
    [2] => -1
)

总结

感觉可以将是否保留键值作为一个可选参数传入,因为很多情况下想要重新索引,当然可以用array_values实现,但如果能集成在函数内部就更好了。

posted @ 2020-04-05 12:16  皎然CEO  阅读(7330)  评论(0编辑  收藏  举报