PHP二维数组扁平化有五种方法:一、array_merge与...解构(PHP7.4+,限规则二维);二、array_reduce配array_merge(兼容PHP5.3+,自动跳过非数组项);三、递归遍历(处理任意嵌套深度);四、array_walk_recursive(仅提取叶子节点值,忽略键名);五、SPL迭代器RecursiveIteratorIterator(支持面向对象式条件控制)。
如果您的 PHP 代码中存在嵌套多层的二维数组,而业务逻辑要求将其转换为单层结构以便后续遍历或数据处理,则需采用特定的数组扁平化策略。以下是实现该目标的多种技术路径:
该方法利用展开运算符将子数组逐个解包,再通过 array_merge 合并为一维数组,仅适用于规则的二维结构(即所有子数组均为一维且无深层嵌套)。
1、定义原始二维数组,例如 $arr = [[1, 2], [3, 4], [5]];
2、调用 $flattened = array_merge(...$arr);
3、注意:若 $arr 中存在非数组元素或空子数组,将触发 Warning 并导致结果异常。
该方式通过高阶函数对数组进行累积合并,兼容性更广,支持 PHP 5.3 及以上版本,且能自动跳过非数组项。
1、初始化目标数组 $flattened = array_reduce($arr, function($carry, $item) { return array_merge($carry, (array)$item); }, []);
2、关键点:强制将每个 $item 转为数组可避免 array_merge 报错;
3、执行后 $flattened 即为合并后的一维数组。
当输入数组可能存在不规则嵌套(如三维或更高维度),但仅需扁平至一维时,递归是最可控的方式,可精确控制层级深度与类型过滤。
1、定义递归函数 function flatten_array($input, &$result = []) { foreach ($input as $value) { if (is_array($value))
{ flatten_array($value, $result); } else { $result[] = $value; } } };
2、调用 flatten_array($arr, $flattened);
3、此方法会完全展开所有嵌套层级,无论原始维度为几维。
该内置函数专为深度遍历设计,自动忽略键名,仅提取叶子节点值,语法简洁且性能稳定,适合纯数据提取场景。
1、声明空数组 $flattened = [];
2、执行 array_walk_recursive($arr, function($value) use (&$flattened) { $flattened[] = $value; });
3、注意:array_walk_recursive 不会保留原始键名,且跳过含有非标量值的子数组(如含对象或资源)。
借助标准库迭代器组合,可实现面向对象风格的扁平化,适用于需在遍历中插入条件判断或中断逻辑的复杂场景。
1、创建迭代器 $it = new RecursiveIteratorIterator(new RecursiveArrayIterator($arr));
2、遍历 $it 并逐个提取值:foreach ($it as $value) { $flattened[] = $value; };
3、该方式天然支持中断(break)、跳过(continue)及键值分离处理。
# php
# php7
# 递归函数
# 标准库
# red
# Array
# 运算符
# if
# 多维数组
# foreach
# 面向对象
# break
# continue
# 递归
# function
# 对象
# input
# 遍历
# 跳过
# 适用于
# 迭代
# 扁平化
# 键名
# 您的
# 均为
相关文章:
建站之星在线客服如何快速接入解答?
建站之星上传入口如何快速找到?
小建面朝正北,A点实际方位是否存在偏差?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
个人摄影网站制作流程,摄影爱好者都去什么网站?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
如何在Golang中使用replace替换模块_指定本地或远程路径
广平建站公司哪家专业可靠?如何选择?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何在Golang中实现微服务服务拆分_Golang微服务拆分与接口管理方法
电商网站制作价格怎么算,网上拍卖流程以及规则?
制作企业网站建设方案,怎样建设一个公司网站?
C#怎么使用委托和事件 C# delegate与event编程方法
如何自定义建站之星模板颜色并下载新样式?
如何通过智能用户系统一键生成高效建站方案?
如何在云主机上快速搭建网站?
网站微信制作软件,如何制作微信链接?
网站制作新手教程,新手建设一个网站需要注意些什么?
导航网站建站方案与优化指南:一站式高效搭建技巧解析
专业商城网站制作公司有哪些,pi商城官网是哪个?
如何设置并定期更换建站之星安全管理员密码?
建站主机功能解析:服务器选择与快速搭建指南
创业网站制作流程,创业网站可靠吗?
建站之星如何防范黑客攻击与数据泄露?
如何使用Golang安装API文档生成工具_快速生成接口文档
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
网站专业制作公司有哪些,做一个公司网站要多少钱?
高端网站建设与定制开发一站式解决方案 中企动力
,购物网站怎么盈利呢?
油猴 教程,油猴搜脚本为什么会网页无法显示?
建站主机服务器选型指南与性能优化方案解析
如何解决VPS建站LNMP环境配置常见问题?
如何确保FTP站点访问权限与数据传输安全?
建站之星如何实现PC+手机+微信网站五合一建站?
定制建站流程步骤详解:一站式方案设计与开发指南
如何零成本快速生成个人自助网站?
山东云建站价格为何差异显著?
深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?
北京专业网站制作设计师招聘,北京白云观官方网站?
浅谈Javascript中的Label语句
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
建站主机数据库如何配置才能提升网站性能?
如何通过山东自助建站平台快速注册域名?
学校为何禁止电信移动建设网站?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
*请认真填写需求信息,我们会在24小时内与您取得联系。