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

admin3年前PHP教程60

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


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

测试代码:github/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

到此这篇关于在PHP中灵活使用foreach+list处理多维数组的文章就介绍到这了,更多相关PHP使用foreach+list处理多维数组内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

PHP的命令行扩展Readline相关函数的使用

目录Readline 扩展的安装基本函数操作读取一行命令历史列表相关操作查看 Readline 状态命令提示效果字符回调操作相关示例总结readline 扩展函数实现了访问 GNU Readline...

服务器中DDoS攻击有哪些类型?100G美国高防服务器有效抵御DOSS流量攻击?

OSI模型是揭示DDoS攻击类型的完美示例。OSI层分为7种类型,根据它,不同类型的攻击属于不同级别的OSI层。由于所有DDoS攻击都涉及目标基础或流量网络,因此将攻击分为应用层攻击、协议攻击、容量攻...

国外多IP服务器如何选择国外多ip服务器租用地址是多少

一、国外多IP服务器有什么用?1、容易被搜索引擎收录普通国外服务器可能只包含一个独立IP。如果很多网站都放在一个IP上,那么引擎就不会重视,甚至会被视为毫无价值的网站。国外多IP服务器提供多个独立IP...

php实现自动生成验证码的实例讲解

现在验证码在表单中的应用越来越多了,但是如果用js来实现总觉得不太方便,因此使用php来实现下,在此记录下。当然,我们也可以封装成一个函数,以后使用的时候也是很方便的,这里并未封装,感兴趣的小伙伴可以...

PHP 弱引用的相关总结

目录什么是弱引用WeakReference注意测试代码:之前的文章中,我们已经学习过引用和引用传值相关的知识。我们知道,PHP 中没有纯引用(指针),不管是对象,还是用引用符号 & 赋值的变量...

租用GPU服务器如何选择?成都GPU服务器租用注意事项?

在选择gpu服务器的时候,首先要考虑业务需求,按照业务需求来选择适合的GPU型号,而且也要考虑配套软件和服务价值。针对不同的使用群体,在服务器的选择方面也是不同的,gpu服务器的标准自然也是不一样的。...