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用数组返回无限分类的列表数据的代码
Aug 08 PHP
解析argc argv在php中的应用
Jun 24 PHP
php两种无限分类方法实例
Apr 21 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
WordPress中对访客评论功能的一些优化方法
Nov 24 PHP
php实现当前页面点击下载文件的简单方法
Sep 22 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
Nov 25 PHP
PHP通过引用传递参数用法分析
Dec 01 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 PHP
laravel5.6中的外键约束示例
Oct 23 PHP
Laravel框架数据库迁移操作实例详解
Apr 06 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
php实现获取文章内容第一张图片的方法
2014/11/04 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
Node.js中使用mongoskin操作mongoDB实例
2014/09/28 Javascript
JS+CSS实现Div弹出窗口同时背景变暗的方法
2015/03/04 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
vue+element+Java实现批量删除功能
2019/04/08 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
使用layui 的layedit定义自己的toolbar方法
2019/09/18 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
如何使用原生Js实现随机点名详解
2021/01/06 Javascript
PyMongo安装使用笔记
2015/04/27 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
2019/03/14 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
详解python配置虚拟环境
2019/04/08 Python
自适应线性神经网络Adaline的python实现详解
2019/09/30 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
python用Configobj模块读取配置文件
2020/09/26 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
检测浏览器对HTML5和CSS3支持度的方法
2015/06/25 HTML / CSS
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
电大学习个人自我评价范文
2013/10/04 职场文书
幼儿园教师节活动方案
2014/02/02 职场文书
表演方阵解说词
2014/02/08 职场文书
病媒生物防治方案
2014/05/13 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
三严三实民主生活会发言稿
2014/10/13 职场文书
大学生自荐信范文
2015/03/05 职场文书
php去除deprecated的实例方法
2021/11/17 PHP