zoukankan      html  css  js  c++  java
  • array_filter()、array_map()、array_walk()三者的用法和区别

    array_filter()、array_map()、array_walk()三者的用法和区别

      该函数把输入数组中的每个键值传给回调函数。如果回调函数返回 true,则把输入数组中的当前键值返回结果数组中。数组键名保持不变。

    $arr = ['a','b',1,2,3];
        
        $new_arr = array_filter($arr,function($val){
            return is_numeric($val);
        });
        
        var_dump($new_arr);
        //返回结果
        //array (size=3)
        //  2 => int 1
        //  3 => int 2
        //  4 => int 3

    array_map()
      该函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。
      可以传递多个数组,回调函数接受的参数数目应该和传递给 array_map() 函数的数组数目一致。

    $arr1 = [1,2,3,4,5];
        $arr2 = [6,7,8,9,10];
        
        //函数写前面,数组参数写后面
        $new_arr = array_map(function($val1,$val2){
           return $val1 + $val2;
        },$arr1,$arr2);
        
        var_dump($new_arr);
        //返回结果
        //array (size=5)
        //  0 => int 7
        //  1 => int 9
        //  2 => int 11
        //  3 => int 13
        //  4 => int 15

    array_walk()
      对数组中的每个元素应用用户自定义函数

    //将数组中的元素用于某种操作
        $arr = ['a','b','c'];
        array_walk($arr,function($val,$key){
            echo "{$key} is {$val} <br/>";
        });
        //返回结果
        //0 is a
        //1 is b
        //2 is c
        
        //改变数组中的值,传参的时候使用引用
        array_walk($arr,function(&$val,$key){
            $val .= $val;
        });
        var_dump($arr);
        //array (size=3)
        //  0 => string 'aa' (length=2)
        //  1 => string 'bb' (length=2)
        //  2 => string 'cc' (length=2)
     

    异同点
     array_filter() 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,返回过滤后的数组
     array_map() 重点在于遍历一个数组或多个数组的元素,返回一个新的数组
     array_walk() 重点在于遍历数组进行某种操作

     array_filter() 和 array_walk()对一个数组进行操作,数组参数在前,函数参数在后
     array_map() 可以处理多个数组,因此函数参数在前,数组参数在后,可以根据实际情况放入多个数组参数

  • 相关阅读:
    ERP/MIS开发 30道ORM问题与解答 LLBL Gen 3.x Adapter
    升级LLBL Gen 2.x项目到3.x
    软件公司为什么要加密源代码,而且是前前后后,反反复复
    ERP/MIS系统中集成命令行式的功能调用
    工作多年后才明白的.NET底层开发技术
    OSGI:从面向接口编程来理解OSGI
    幸福框架:如何阅读幸福框架的代码
    OSGI:C#如何实现简单的OSGI
    技术人生:技术之路,需要的是热情和梦想
    EHR:对人力资源信息系统的认识
  • 原文地址:https://www.cnblogs.com/xiondun/p/12461941.html
Copyright © 2011-2022 走看看