• array_map,array_walk的使用以及区别


    $config = [
    1 => ['title'=> '推荐','code'=>1],
    2 => ['title'=> '搞笑','code'=>1],
    3 => ['title'=> '奇闻','code'=>2],
    ];
    数组如上
    现在要取出数组里面code为1的内容,结果要下面这样的
    [1=>'推荐',2=>'搞笑']

    楼主刚刚使用了一下map以及walk,发现

    array_map(function($key) use ($config){
    print_r($key);die();
    }, $config);

    array_walk($config, function($value, $key) use (&$config ){
    if($value['project_code'] == 1){
    $config[$key] = $value['title'];
    }else{
    unset($config[$key]);
    }
    });

    使用map的时候,在匿名函数里面是没有key值的,而walk是同时存在key val两个值的,
    所以这应该是他们最大的区别吧。

    所以直接使用map的话,是无法实现上面的需求的,除非再定义一个回掉函数,使用回掉函数来处理,楼主没有亲测,感兴趣的可以试试。

    现在来说说walk是如何实现的,其实很简单,在匿名函数里面直接使用外面的config,这里就相当于使用了一次foreach,
    array_walk($config, function($value, $key) use (&$config ){
    print_r($value);die();
    });
    得到结果如下
    Array
    (
        [title] => 推荐
        [code] => 1
    )
    然后只要判断等于1的把它拿出来就好了,不是1的就把它给删除掉
    array_walk($config, function($value, $key) use (&$config ){
    if($value['code'] == 1){
    $config[$key] = $value['title'];
    }else{
    unset($config[$key]);
    }
    });

    最后就能得到你想要的结果了,而且还不需要定义一个新数组,直接操作原来的数据一步到位
    Array
    (
        [1] => 推荐
        [2] => 搞笑
    )

    这里要特别注意的是如果你想直接就把原来的数组改变掉,一定要加 & 字符
    不然的话你是操作不了外部数组的。

    是不是又对&符号的使用又加深印象了 !!!!




  • 相关阅读:
    GXPT(一)——UI设计
    JVM系列文章(四):类载入机制
    poj 2688 状态压缩dp解tsp
    ASP.NET MVC Model绑定(四)
    cocos2dx实例开发之flappybird(入门版)
    qt creator中使用qwt插件
    [CodeEdit--Sublime]一些好用的Plugins
    NBUT 1225 NEW RDSP MODE I
    [IOC]Unity使用
    [Js/Jquery]jquery插件开发
  • 原文地址:https://www.cnblogs.com/jenkin1991/p/9681185.html
Copyright © 2020-2023  润新知