• array_filter、array_map、array_walk解释


    /**

    * array_filter 用回调函数处理数组中的各个元素,
    * 重点在于过滤(而不是新增)某个元素,当你处理到一个元素时,
    * 如果返回了false,那么这个元素将会被过滤掉。PS:保持了原来的索引。
    */
    $arr = array(1,2,3,'aaa'=>4,5);

    $newArr = array_filter($arr,function($val) {
    if ($val == 3) {
    return false; // 返回false 这个元素将要被过滤掉
    }
    return true; //保留的元素
    });

    print_r($newArr);

    /**
    array_map 函数势必比array_walk要更常用,因为php内置函数默认就是传的值而不是引用,
    那么你使用内置函数如:intval() strtolower()。。的时候walk就无能为力了
    * array_map 用回调函数处理数组中的各个元素,
    * 在函数中你可以改变各个元素的值,
    * 重点在你需要什么样的值就返回什么样的值,保持索引。
    可以一次性处理多个数组。但是数组的数量应该与回调函数的参数保持一致
    */
    $arr = array(1,2,3,'aaa'=>4,5);

    $newArr = array_map(function($val) {
    if ($val == 3) {
    $val *= $val;
    }
    return $val; //这里是改变过的值,可以返回给新的数组

    },$arr);

    print_r($newArr);

    /**
    * ps : 如果处理的数组不是二维,可以用array_map进行取代
    * 处理二维数组用array_walk_recursive函数,
    * 在处理一维数组时,但是或许array_walk函数因为是传引用,处理大数组时效率或许会比array_map高呢?
    * array_walk 用回调函数处理数组中的各个元素,
    * 此函数返回bool。所以需要配合引用传值直接改变原数组才有一定的功效。
    */

    //摘自手册 只有 array 的值才可以被改变,用户不应在回调函数中改变该数组本身的结构。
    //例如增加/删除单元,unset 单元等等。
    $arr = array(1,2,3,'aaa'=>4,5);

    array_walk($arr,function(&$val,$key) {
    if ($val == 3) {
    echo $key.'<br/>';
    $val = 33333;
    }
    });

    print_r($arr);

  • 相关阅读:
    2020牛客暑期多校训练营(第八场)解题报告
    2020牛客暑期多校训练营(第七场)解题报告
    2020 Multi-University Training Contest 3 解题报告
    2020牛客暑期多校训练营(第五场)解题报告
    2020 Multi-University Training Contest 2 解题报告
    Android应用开发基础 学习笔记(一)
    Java基础:JUC包学习笔记
    Java基础:枚举学习笔记
    Java基础:反射学习笔记
    Java基础:Stream流学习笔记
  • 原文地址:https://www.cnblogs.com/web21/p/6007978.html
Copyright © 2020-2023  润新知