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

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

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

咱们须要的结果是元素1变成1,2,3,4,元素2变成5,6,7,8,这时候,咱们就能够用foreach配合list来实现,并且很是简单:git

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

是否是很是的简单。可是要注意哦,list拆解键值对形式的Hash数组时要指定键名,而且只有在7.1之后的版本才可使用哦github

$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测试

===============code

关注公众号:【硬核项目经理】获取最新文章blog

添加微信/QQ好友:【xiaoyuezigonggong/149844827】免费得PHP、项目管理学习资料项目管理

知乎、公众号、抖音、头条搜索【硬核项目经理】

B站ID:482780532