PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结


Posted in PHP onDecember 04, 2019

本文实例总结了PHP实现二维数组(或多维数组)转换成一维数组的常见方法。分享给大家供大家参考,具体如下:

假设有下面一个二维数组:

$user = array(
  '0' => array('id' => 100, 'username' => 'a1'),
  '1' => array('id' => 101, 'username' => 'a2'),
  '2' => array('id' => 102, 'username' => 'a3'),
  '3' => array('id' => 103, 'username' => 'a4'),
  '4' => array('id' => 104, 'username' => 'a5'),
);

现在要转换成一维数组,有两种情况:

一种是将指定列转换成一维数组,这在另一篇文章有总结:PHP提取多维数组指定一列的方法总结。

现在我们重点讲第二种情况,就是把所有的值都转换成一维数组,而且键值相同不会被覆盖,转换后的一维数组是这样的:

$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4', 104, 'a5');

主要有下面几个方法。

1 array_reduce函数法

用array_reduce()函数是较为快捷的方法:

$result = array_reduce($user, function ($result, $value) {
  return array_merge($result, array_values($value));
}, array())

因为array_merge函数会把相同字符串键名的数组覆盖合并,所以必须先用array_value取出值后再合并。

如果第二维是数字键名,如:

$user = array(
  'a' => array(100, 'a1'),
  'b' => array(101, 'a2'),
  'c' => array(102, 'a3'),
  'd' => array(103, 'a4'),
  'e' => array(104, 'a5'),
);

那么直接这样就可以了:

$result = array_reduce($user, 'array_merge', array())

2 array_walk_recursive函数法

用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一维数组。

$result = [];
array_walk_recursive($user, function($value) use (&$result) {
  array_push($result, $value);
});

例如,下面这个多维数组:

$user4 = array(
  'a' => array(100, 'a1'),
  'b' => array(101, 'a2'),
  'c' => array(
    'd' => array(102, 'a3'),
    'e' => array(103, 'a4'),
  ),
);

用这个方法后就变成:

$result = array(100, 'a1', 101, 'a2', 102, 'a3', 103, 'a4');

3 array_map函数法

用array_map和array_reduce函数的方法类似,如下:

$result = [];
array_map(function ($value) use (&$result) {
  $result = array_merge($result, array_values($value));
}, $user);

只是需要多声明一个空的$result数组。

另外,也可以用array_walk的方法,和foreach循环的方法,原理和上面一样。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
利用PHP动态生成VRML网页
Oct 09 PHP
手把手教你使用DedeCms的采集的图文教程
Mar 11 PHP
php日历[测试通过]
Mar 27 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
May 07 PHP
php自动识别文件编码并转换为UTF-8的方法
Jun 12 PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 PHP
php递归删除目录与文件的方法
Jan 30 PHP
php for 循环使用的简单实例
Jun 02 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
Feb 28 PHP
php提供实现反射的方法和实例代码
Sep 17 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 PHP
PHP实现提取多维数组指定一列的方法总结
Dec 04 #PHP
php实现快速对二维数组某一列进行组装的方法小结
Dec 04 #PHP
PHP实现发送微博消息功能完整示例
Dec 04 #PHP
PHP连续签到功能实现方法详解
Dec 04 #PHP
Laravel框架Eloquent ORM修改数据操作示例
Dec 03 #PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 #PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
Dec 03 #PHP
You might like
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
IIS+PHP+MySQL+Zend配置 (视频教程)
2006/12/13 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
2013/11/07 PHP
分享十款最出色的PHP安全开发库中文详细介绍
2015/03/22 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
对frameset、frame、iframe的js操作示例代码
2013/08/16 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
JS实现随机乱撞彩色圆球特效的方法
2015/05/05 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
JavaScript生成带有缩进的表格代码
2016/06/15 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
微信小程序侧边栏滑动特效(左右滑动)
2017/01/23 Javascript
JavaScript 字符串数字左补位,右补位,取固定长度,截位扩展函数代码
2017/03/25 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
python处理csv数据的方法
2015/03/11 Python
基于python实现把json数据转换成Excel表格
2020/05/07 Python
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
SQL面试题
2013/04/30 面试题
现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset
2012/11/09 面试题
国际经济贸易专业推荐信
2013/11/06 职场文书
装潢设计专业推荐信模板
2013/11/26 职场文书
超市端午节活动方案
2014/01/23 职场文书
优秀女职工事迹材料
2014/02/06 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
建筑技术负责人岗位职责
2015/04/13 职场文书
汶川大地震感悟
2015/08/10 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL