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目录与文件操作
Dec 30 PHP
PHP中空字符串介绍0、null、empty和false之间的关系
Sep 25 PHP
PHP入门之常量简介和系统常量
May 12 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
Mar 19 PHP
php对文件进行hash运算的方法
Apr 03 PHP
php检查页面是否被百度收录
Oct 28 PHP
php封装的mysqli类完整实例
Oct 18 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 PHP
利用PHP获取网站访客的所在地位置
Jan 18 PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
Mar 21 PHP
Yii2.0框架behaviors方法使用实例分析
Sep 30 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
一个取得文件扩展名的函数
2006/10/09 PHP
分享一段php获取linux服务器状态的代码
2014/05/27 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
JavaScript Event学习第四章 传统的事件注册模型
2010/02/07 Javascript
js跨浏览器实现将字符串转化为xml对象的方法
2013/09/25 Javascript
jquery sortable的拖动方法示例详解
2014/01/16 Javascript
JavaScript实现大数的运算
2014/11/24 Javascript
NodeJS学习笔记之MongoDB模块
2015/01/13 NodeJs
JS实现文字链接感应鼠标淡入淡出改变颜色的方法
2015/02/26 Javascript
js获取form的方法
2015/05/06 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
详解NODEJS基于FFMPEG视频推流测试
2017/11/17 NodeJs
vue中倒计时组件的实例代码
2018/07/06 Javascript
解决layui中的form表单与button的点击事件冲突问题
2018/08/15 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
vue实现点击按钮切换背景颜色的示例代码
2020/06/23 Javascript
python动态参数用法实例分析
2015/05/25 Python
使用pdb模块调试Python程序实例
2015/06/02 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
2018/01/11 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
windows环境下tensorflow安装过程详解
2018/03/30 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
python匿名函数用法实例分析
2019/08/03 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
孕妇内衣和胸罩:Cake Maternity
2018/07/16 全球购物
int *p=NULL和*p= NULL有什么区别
2014/10/23 面试题
餐饮业创业计划书范文
2014/01/06 职场文书
单位授权委托书范文
2014/08/02 职场文书
群众路线剖析材料怎么写
2014/10/09 职场文书
会计岗位职责
2015/02/03 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL
详解Oracle块修改跟踪功能
2021/11/07 Oracle
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis