zoukankan      html  css  js  c++  java
  • 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] => 搞笑
    )

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

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




  • 相关阅读:
    python中的unlink
    if
    python中if __name__ == '__main__'
    rename函数
    win2003的密钥
    url
    python中的os.stat
    python中的mysql
    防火墙
    网址
  • 原文地址:https://www.cnblogs.com/jenkin1991/p/9681185.html
Copyright © 2011-2022 走看看