zoukankan      html  css  js  c++  java
  • 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:
    ";
      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实现,但如果能集成在函数内部就更好了。

  • 相关阅读:
    BZOJ 4710: [Jsoi2011]分特产
    P4859 已经没有什么好害怕的了
    BZOJ 2839 集合计数
    P1450 [HAOI2008]硬币购物
    P3440 [POI2006]SZK-Schools
    P4177 [CEOI2008]order
    对于最小割的进一步理解
    P2774 方格取数问题
    JAVA网络编程TCP通信
    JAVA多线程及补充
  • 原文地址:https://www.cnblogs.com/jiaoran/p/12636631.html
Copyright © 2011-2022 走看看