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 10 PHP
php下使用curl模拟用户登陆的代码
Sep 10 PHP
并发下常见的加锁及锁的PHP具体实现代码
Oct 12 PHP
PHP中strtotime函数使用方法详解
Nov 27 PHP
php inc文件使用的风险和注意事项
Nov 12 PHP
php+mysql实现的二级联动菜单效果详解
May 10 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
Sep 15 PHP
php 数据结构之链表队列
Oct 17 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
Laravel框架路由设置与使用示例
Jun 12 PHP
PHP7 echo和print语句实例用法
Feb 15 PHP
使用composer 安装 laravel框架的方法图文详解
Aug 02 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
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
PHPCrawl爬虫库实现抓取酷狗歌单的方法示例
2017/12/21 PHP
Ext.MessageBox工具类简介
2009/12/10 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
JS实现的仿淘宝交易倒计时效果
2015/11/27 Javascript
浅谈JavaScript的内置对象和浏览器对象
2016/06/03 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
详解PHP后期静态绑定分析与应用
2018/03/21 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
深入解析ES6中的promise
2018/11/08 Javascript
微信小程序一周时间表功能实现
2019/10/17 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
python3调用R的示例代码
2018/02/23 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
Django web框架使用url path name详解
2019/04/29 Python
使用Python轻松完成垃圾分类(基于图像识别)
2019/07/09 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
Django使用Jinja2模板引擎的示例代码
2019/08/09 Python
Python3 合并二叉树的实现
2019/09/30 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
文明礼仪事迹材料
2014/01/09 职场文书
法学专业自我鉴定
2014/02/05 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
职工的安全责任书范文!
2019/07/02 职场文书