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代码
Jul 17 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
php判断ip黑名单程序代码实例
Feb 24 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
PHP+jQuery 注册模块开发详解
Oct 14 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
PHP常见的6个错误提示及解决方法
Jul 07 PHP
php session的应用详细介绍
Mar 22 PHP
PHP htmlentities()函数用法讲解
Feb 25 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在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
PHP FTP操作类代码( 上传、拷贝、移动、删除文件/创建目录)
2014/05/10 PHP
php实现utf-8转unicode函数分享
2015/01/06 PHP
分享常见的几种页面静态化的方法
2015/01/08 PHP
PHP中set_include_path()函数相关用法分析
2016/07/18 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
Javascript 阻止javascript事件冒泡,获取控件ID值
2009/06/27 Javascript
JQuery入门——移除绑定事件unbind方法概述及应用
2013/02/05 Javascript
javascript 上下banner替换具体实现
2013/11/14 Javascript
jquery改变tr背景色的示例代码
2013/12/28 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
2014/09/04 Javascript
JavaScript常用函数工具集:lao-utils
2016/03/01 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
JS实现简单的天数计算器完整实例
2017/04/28 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
2分钟实现一个Vue实时直播系统的示例代码
2020/06/05 Javascript
自己使用总结Python程序代码片段
2015/06/02 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
python画一个玫瑰和一个爱心
2020/08/18 Python
浅析python中while循环和for循环
2019/11/19 Python
opencv 实现特定颜色线条提取与定位操作
2020/06/02 Python
购买限量版收藏品、珠宝和礼品:Bradford Exchange
2016/09/23 全球购物
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
Desigual美国官方网站:西班牙服装品牌
2019/03/29 全球购物
放飞中国梦演讲稿
2014/04/23 职场文书
2014高考励志标语
2014/06/05 职场文书
学生实习证明范文
2014/09/28 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
SpringBoot详解执行过程
2022/07/15 Java/Android