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

admin3年前PHP教程94

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


$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处理多维数组内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

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

相关文章

CakePHP的安装的简单方法

在对于CakePHP的作用有了初步认识后,我们可以下载CakePHP来进行一些使用。在安装前,要检查php的版本情况,防止CakePHP框架出现不适配的情况。对于具体的框架组装,会涉及到依赖库和Com...

如何用php根据地址获取经纬度

这里用的是百度地图的接口,你需要先申请百度的服务秘钥(ak)。百度地图有这样一个接口:地理编码1.php代码:/** * 根据地址获取经纬度 -- 百度地图 */public fu...

php双向队列实例讲解

1、双向队列是指一种具有队列和栈的性质的数据结构。2、双向队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双向队列就像是一个队列,但是你可以在任何一端添加或移除元素。实例?123456...

杭州BGP高防服务器租用优势有哪些

杭州BGP高防服务器租用的优势包括:高防能力强:BGP高防服务器采用了BGP路由协议和多线接入技术,能够有效地抵御各种DDoS攻击和黑客入侵,确保您的网站和服务器的安全和稳定运行。带宽大:BGP高防服...

php并发加锁问题分析与设计代码实例讲解

在工作项目中,会遇到一些php并发访问去修改一个数据问题,如果这个数据不加锁,就会造成数据的错误。下面我将分析一个财务支付锁的问题。希望对大家有所帮助。1 没有应用锁机制1.1 财务支付简化版本代码&...

如何选择成都gpu服务器主机

如何选择成都gpu服务器主机?GPU服务器,又叫做显卡服务器(高性能处理器+大内存+高性能显卡=GPU服务器)。GPU服务器,简单来说,GPU服务器是基于GPU的应用于视频编解码、深度学习、科学计算等...