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+Html+缓存
Dec 20 PHP
php Try Catch异常测试
Mar 01 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
PHP版网站缓存加快打开速度的方法分享
Jun 03 PHP
MySQL 日期时间函数常用总结
Jun 12 PHP
如何使用php绘制在图片上的正余弦曲线
Jun 08 PHP
PHP图片处理之使用imagecopyresampled函数实现图片缩放例子
Nov 19 PHP
JSON两种结构之对象和数组的理解
Jul 19 PHP
浅谈PHP SHA1withRSA加密生成签名及验签
Mar 18 PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 PHP
PHP获取当前时间不准确问题解决方案
Aug 14 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 xml文件操作实现代码(二)
2009/03/20 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
php实现的递归提成方案实例
2015/11/14 PHP
PHP可变函数学习小结
2015/11/29 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
PHP实现根据数组的值进行分组的方法
2017/04/20 PHP
基本jquery的控制tabs打开的数量的代码
2010/10/17 Javascript
js利用数组length属性清空和截短数组的小例子
2014/01/15 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
原生js实现移动端瀑布流式代码示例
2015/12/18 Javascript
利用jQuery中的ajax分页实现代码
2016/02/25 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
js实现一个简易计算器
2020/03/30 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
2020/04/10 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
Python实现单词翻译功能
2017/06/06 Python
python监测当前联网状态并连接的实例
2018/12/18 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
python3 selenium自动化 frame表单嵌套的切换方法
2019/08/23 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
另类冲刺标语
2014/06/24 职场文书
订货会邀请函
2015/01/31 职场文书
餐饮店长岗位职责
2015/04/14 职场文书
英文辞职信范文
2015/05/13 职场文书
2016国培研修心得体会
2016/01/08 职场文书
MySQL性能压力基准测试工具sysbench的使用简介
2021/04/21 MySQL
我对PyTorch dataloader里的shuffle=True的理解
2021/05/20 Python
Kubernetes控制节点的部署
2022/04/01 Servers