• php中array_filter的使用


    这是今天在做作业的时候遇到的一个问题,不知道大家有没有遇到同样的问题,就是去除数组中不符合我们条件的数据并且保留其键名。

    言归正传:

      array array_filter ( array $input [, callback $callback ] )

      array_filter() 依次将 input 数组中的每个值传递到 callback 函数。如果 callback 函数返回 TRUE,则 input数组的当前值会被包含在返回的结果数组中。数组的键名保留不变。

    具体的使用方法我也研究了一下。在一般情况下使用

      function old($var)

    {

      return($var % 2 == 1);
    }

     $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

     print_r(array_filter($array1, "old"));
    这样我们打印出来就是

      Array( [a] => 1[c] => 3  [e] => 5);

    这里需要说明的是,$var 代表传入的值参数,然后根据函数的运算,返回为真的则进行保留,返回为假的进行去除。

    手册上也就这么多的说明,但是怎么在oop中使用呢?想了半天也实验了半天,搞定了。

      在oop中

      function old($var)

    {

      return($var % 2 == 1);

    }

    $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
    print_r(array_filter($array1, array($this,'old')));
    说完用法,我们来回顾下 array_filter的含义,它是将数组的值依次传入其中进行运算的,也就相当于foreach一遍,测试了下在1185条数据处理使用了 0.25s。

    若果数据比较多的时候 时间还会更长。下面看下另外的一个方法

      foreach($array as $key => $value){

        if(true){

          continue;

        }

        -------------------------

    }

    两个函数处理的时间是一样的,但是要注意的一点就是

     arry_filte是一次运算,不可以参杂更多的运算逻辑。

    而foreach则可以在运算的同时进行其它的操作运算。

    综上所述,在数据量较小或不需要太多的运算的时候完全可以使用array_filter,并且效率是很高的。

    若数据量比较庞大,或运算比较复杂则使用下面一种比较快些。。

  • 相关阅读:
    Python创建空DataFrame及添加行数据
    Python读取Excel文件
    Python拆分DataFrame
    Python中识别DataFrame中的nan
    Python线性回归算法【解析解,sklearn机器学习库】
    Python鸢尾花分类实现
    Python机器学习入门
    Python使用map,reduce高阶函数模拟实现Spark的reduceByKey算子功能
    Python参数传递(传值&传引用)
    Python迭代器
  • 原文地址:https://www.cnblogs.com/wicub/p/5881447.html
Copyright © 2020-2023  润新知