zoukankan      html  css  js  c++  java
  • array_map,array_filter,array_walk区别

    这几个方法都有遍历数组,操作的过程。 很容易搞混。尤其很多人养成的编程习惯都是使用foreach来循环遍历。。

    就举个简单例子。 

    $a = array(
     0,1,2,3,4,5,6,7,8,9
    );
    
    function filter($v){
      return $v == 0 ? true :false;
    }
    function map($v){
       return $v == 0 ? 0 : 10;
    }
    
    // array_walk函数中,如果想直接作用于数组中的值,可以把$v,写成引用形式&$v
    function walk($v, $k){
       echo $k , '=>', $v ,'
    ';
    }
    
    
    $b = array_filter($a, 'filter');
    /**
      // 也可以把回调函数,放在filter里。
      $b = array_filter($a, function(){
            return $v == 0 ? true :false;
      });
    */
    
    // array_map 函数中的参数顺序,和filter不一样。。
    $c = array_map('map', $a);// 同理也可以把回调函数放在这里
    
    print_r($b);
    print_r($c);
    
    
    array_walk($a, 'walk');

    Array
    (
    [0] => 0
    )


    Array
    (
    [0] => 0
    [1] => 10
    [2] => 10
    [3] => 10
    [4] => 10
    [5] => 10
    [6] => 10
    [7] => 10
    [8] => 10
    [9] => 10
    )

    0=>0         1=>1         2=>2         3=>3         4=>4         5=>5         6=>6         7=>7         8=>8         9=>9

    显然,array_filter,函数的作用就是过滤原数组,在过滤函数中,返回true的,才会保留。结果数组通常元素个数就少于了原数组个数(过滤了的话

    array_map,函数作用是对原数组元素进行一一map映射,元素个数仍然是原来的。map函数中,直接返回的是键值了。

    array_walk,这个函数,walk函数接收key和value两个参数,直接在walk函数中处理业务。

    简单的区别就是这样,详细参考手册。。

    array_map是遍历数组元素调用函数,不只是可以调用自定义函数,也可以调用内置函数。

    比如希望对一个数组的所有元素去左右空格。

    可以foreach,再trim。

    当然可以使用array_map

    $re = array_map('trim', $arr);

    -

  • 相关阅读:
    UITableView加载显示更多内容
    UITableView  折叠效果
    40个GitHub上最受欢迎的iOS开源项目
    oc中的block使用心得
    iOS CGRectContainsPoint的用法
    ios NSComparator 三种枚举类型
    错误提示 Unsupported compiler 'com.apple.compilers.llvmgcc42' selected for architecture 'i386'
    IOS 第三方库之-MBProgressHUD的使用详解
    ios 测试工程是否内存泄漏
    单双击手势
  • 原文地址:https://www.cnblogs.com/firstForEver/p/5017286.html
Copyright © 2011-2022 走看看