标题:在PHP中灵活使用foreach+list处理多维数组

文章目录
    分类:PHP 标签:PHP基础

    在PHP中灵活使用foreach+list处理多维数组

    先抛出问题,有时候我们接收到的参数是多维数组,我们需要将他们转成普通的数组,比如:

    
    $arr = [
        [1, 2, [3, 4]],
        [5, 6, [7, 8]],
    ];
    

    我们需要的结果是元素1变成1,2,3,4,元素2变成5,6,7,8,这时候,我们就可以用foreach配合list来实现,而且非常简单:

    
    foreach ($arr as list($a, $b, list($c, $d))) {
        echo $a, ',', $b, ',', $c, ',', $d, PHP_EOL;
    }
    

    是不是非常的简单。但是要注意哦,list拆解键值对形式的Hash数组时要指定键名,并且只有在7.1以后的版本才可以使用哦

    
    $arr = [
        ["a" => 1, "b" => 2],
        ["a" => 3, "b" => 4],
    ];
    
    foreach ($arr as list("a" => $a, "b" => $b)) {
        echo $a, ',', $b, PHP_EOL;
    }
    
    foreach ($arr as ["a" => $a, "b" => $b]) {
        echo $a, ',', $b, PHP_EOL;
    }
    

    注意:如果没有写键名,会输出空而不会报错,这是个BUG点,千万要注意。


    上述代码中第二个写法更简单直观,由此发现我们还可以这样来拆解数组。并且指定键值了就不用在乎他们的顺序了:

    
    ["b" => $b, "a" => $a] = $arr[0];
    echo $a, ',', $b, PHP_EOL;
    

    原来list()还有这样的语法糖,果然还是要不断的学习,一直使用却从未深入了解过的方法竟然能有这么多的用处。不多说了,接着研究手册中其他好玩的东西去咯!


    测试代码:https://github.com/zhangyue0503/dev-blog/blob/master/php/201911/source/%E5%9C%A8PHP%E4%B8%AD%E7%81%B5%E6%B4%BB%E4%BD%BF%E7%94%A8foreach%2Blist%E5%A4%84%E7%90%86%E5%A4%9A%E7%BB%B4%E6%95%B0%E7%BB%84.php

    视频链接

    B站视频地址:https://www.bilibili.com/video/BV18A411v7qL

    微信视频地址:http://mp.weixin.qq.com/s?__biz=MzIxODQyNTU1MA==&mid=2247484683&idx=1&sn=e847f7022a1c9b3e757d8a59a7d288d8&chksm=97ebf4aaa09c7dbc47e0e7f4312596df4c95e752e08ca0c18e35d442f53adf064fa4f1d46da5&scene=27#wechat_redirect

    微信文章地址:http://mp.weixin.qq.com/s?__biz=MzIxODQyNTU1MA==&mid=2247484293&idx=1&sn=8a1f4985d55baa7b60c69f16de8fb1f8&chksm=97ebf224a09c7b3245e9181e7d3be4b314f81de8c20b0a243f4e4e08fa61493d7f212c72a21a&scene=27#wechat_redirect

    搜索
    关注