zoukankan      html  css  js  c++  java
  • array_walk、array_map、array_filter 的用法

    array_walk、array_map、array_filter  和 foreach 都有循环对数组元素进行处理的功能。

    一、array_walk 用法

    1、循环数组,回调处理(并不修改数组元素的值,而是跳出去做其他的事情[回调的定义])

    如:

    $arr = [
        ['name' => 'A', 'age' => 18],
        ['name' => 'B', 'age' => 11],
    ];
     array_walk($arr, function ($value) {
         //做其他的逻辑处理,不对数组元素进行处理
         echo  "name:" . $value['name'] . ', age:' . $value['age'] . "
    ";
     });

    输出的结果:

    name:A, age:18
    name:B, age:11

    2、循环数组,对数据的元素进行处理

    如:

    $arr = [
        ['name' => 'A', 'age' => 18],
        ['name' => 'B', 'age' => 11],
    ];
    
    //使用引用
     array_walk($arr, function (&$value) {
        //修改元素的 age  值
        $value['age'] = $value['age'] - 1;
        
     });
    
    print_r($arr);

    输出结果:

    Array
    (
       [0] => Array
           (
               [name] => A
               [age] => 17
           )
       [1] => Array
           (
               [name] => B
               [age] => 10
           )
    )

    二、array_map 用法

    array_map 的作用其实和array_walk 的引用差不多,就是循环数组,对数组元素的值进行处理;

    三、array_filter 用回调函数过滤数组中的单元

    通过 array_filter 处理过的数组,数字索引的数组会是不连续的,要通过 array_values()处理整理数组

    function odd($var)
    {
        // returns whether the input integer is odd
        return($var & 1);
    }
    
    function even($var)
    {
        // returns whether the input integer is even
        return(!($var & 1));
    }
    
    $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
    $array2 = array(6, 7, 8, 9, 10, 11, 12);
    
    echo "Odd :
    ";
    print_r(array_filter($array1, "odd"));
    echo "Even:
    ";
    print_r(array_filter($array2, "even"));
  • 相关阅读:
    Shortest Paths
    Minimum Spanning Trees
    Programming Assignment 1: WordNet
    Directed Graphs
    内连接
    数据中台文档--参考
    ORACLE触发器字段触发
    DTS
    oracle删除归档日志
    OGG 分区表
  • 原文地址:https://www.cnblogs.com/echojson/p/12072009.html
Copyright © 2011-2022 走看看