在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()还有这样的语法糖,果然还是要不断的学习,一直使用却从未深入了解过的方法竟然能有这么多的用处。不多说了,接着研究手册中其他好玩的东西去咯!
===============
关注公众号:【硬核项目经理】获取最新文章
添加微信/QQ好友:【xiaoyuezigonggong/149844827】免费得PHP、项目管理学习资料
知乎、公众号、抖音、头条搜索【硬核项目经理】
B站ID:482780532
在PHP中灵活使用foreach+list处理多维数组的更多相关文章
- Java读取excel指定sheet中的各行数据,存入二维数组,包括首行,并打印
1. 读取 //读取excel指定sheet中的各行数据,存入二维数组,包括首行 public static String[][] getSheetData(XSSFSheet sheet) thro ...
- php中foreach循环遍历二维数组
最近在用tp3.2框架,在查询的时候用到了select(),这条语句返回的是二维数组,所以在对返回的数据做处理时,遇到了些麻烦,百度了下foreach,终于用foreach解决了数据的筛选问题 (因为 ...
- thinkphp foreach循环生成二维数组的方法
先做个问题记录,另外下面是做的过程中遇到的一个没想明白的现象 foreach($result as $key => $val ){ $wzList[$key]['lik']=$val[0]; $ ...
- php中遍历二维数组并以表格的形式输出
一.索引数组 <?php //使用array()语句结构将联系人列表中所有数据声明为一个二维数组,默认下标是顺序数字索引 $contact1 = array( //定义外层数组 array(1, ...
- 题目一:使用Java实现二维数组中的查找
考点:数组 题目:二维数组中的查找 描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判 ...
- 剑指Offer面试题:2.二维数组中的查找
一.题目:二维数组中的查找 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...
- C++中动态申请二维数组并释放方法
C/C++中动态开辟一维.二维数组是非常常用的,以前没记住,做题时怎么也想不起来,现在好好整理一下. C++中有三种方法来动态申请多维数组 (1)C中的malloc/free (2)C++中的new/ ...
- 剑指Offer编程题1——二维数组中的查找
剑指Offer编程题1---------------二维数组中的查找 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完 ...
- 二维数组中的查找问题--剑指offer面试题3
题目:在一个二维数组中,对每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. // 二维数组中的查找 ...
随机推荐
- MyBatis学习04(注解开发)
7.使用注解开发 7.1 面向接口编程 根本原因 : 解耦 , 可拓展 , 提高复用 , 分层开发中 , 上层不用管具体的实现 , 大家都遵守共同的标准 , 使得开发变得容易 , 规范性更好 在一个面 ...
- IllegalArgumentException occurred while calling setter for property
参考https://blog.csdn.net/qq_41192690/article/details/80659427 主码 是 integer类型的 就不要在写成这个样子了 把type=" ...
- 10BASE—T的主要技术特性
1)数据传输速率10Mbps基带传输 2)每段双绞线最大长度100m 3)一条通路允许连接HUB数4个,最多5段传输介质 4)拓扑结构星型 5)访问控制方式CSMA/CD 6)帧长度可变,最大1518 ...
- SpringBoot跨域
第一种方法 在Controller类或方法上加上@CrossOrigin元注解 package com.wzq.test.action; import com.wzq.utils.BatchDownF ...
- Spring-boot注入配置为java静态属性
配置文件 注入静态变量 注意 类上面有:@Component注解 使用注入的静态变量 成功
- Django常用 命令
Django常用 命令: 安装: pip install django 指定版本 pip3 install django==2.0 新建项目: django-admin.py startproject ...
- Python代码阅读(第1篇):列表映射后的平均值
本篇阅读的代码实现了将列表进行映射,并求取映射后的平均值. 本篇阅读的代码片段来自于30-seconds-of-python. average_by def average_by(lst, fn=la ...
- Windows搭建mac黑苹果系统
最近看到一个开源工具tidevice,是可以脱离mac来做ios自动化测试的.看到这么方便,就想着来尝尝鲜.但由于使用该工具,是需要基于WebDriverAgent的,该工具又需要使用Xcode重签名 ...
- mybatis插值,数据提交事务回滚数据库值为空
mybatis插值,数据提交事务回滚数据库值为空 通过sql日志查看sql为:INSERT INTO `quanxian`.`user` ( phone, email, password, times ...
- 高德地图——骑行路线&骑行指定
&plugin=AMap.Riding 也是[]中放json, 包含keyword和city,不能有途经1.骑行路线(关键字) <!DOCTYPE html> <html&g ...