3个PHP多维数组转为一维数组的方法实例


Posted in PHP onMarch 13, 2014

很多时候我们需要将多维数组转成一维数组,因为我们只需要一维数组,而且一维数组使用起来更方便,在PHP中如何将多维数组转成一维数组?下面我们来看看三个多维数组转为一维数组例子:
一、使用foreach

<?php
   function arr_foreach ($arr) 
   {
      static $tmp=array();  
      if (!is_array ($arr)) 
      {
         return false;
      }
      foreach ($arr as $val ) 
      {
         if (is_array ($val)) 
         {
            arr_foreach ($val);
         } 
         else 
         {
            $tmp[]=$val;
         }
      }
      return $tmp;
   }
   $a = array(1,2=>array(3,4=>array(5,6)),7);
   print_r(arr_foreach($a));
?>

二、使用for循环,只能遍历数字下标的数组
<?php
   function arr_foreach($arr)
   {
      static $tmp=array();        for($i=0; $i<count($arr); $i++)
      {  
         if(is_array($arr[$i]))
         {  
            arr_foreach($arr[$i]);  
         }else{  
            $tmp[]=$arr[$i];  
         }  
      }  
      return $tmp;  
   } 
   //调用例子
   $a = array(1,array(3,array(5,6)),7);
   print_r(arr_foreach($a));
?>

三、使用while
/**
 * 将多维数组转为一维数组
 * @author echo
 * @link https://3water.com/
 * @param array $arr
 * @return array
 */
function ArrMd2Ud($arr) {
 #将数值第一元素作为容器,作地址赋值。
 $ar_room = &$arr[key($arr)];
 #第一容器不是数组进去转呀
 if (!is_array($ar_room)) {
  #转为成数组
  $ar_room = array($ar_room);
 }
 #指针下移
 next($arr);
 #遍历
 while (list($k, $v) = each($arr)) {
  #是数组就递归深挖,不是就转成数组
  $v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v);
  #递归合并
  $ar_room = array_merge_recursive($ar_room, $v);
  #释放当前下标的数组元素
  unset($arr[$k]);
 }
 return $ar_room;
}

调用示例:

$arr = array(1, 2, 3 => array(1, 2, 'ar' => array(1, 2 => array('a', 'b'))), array('ar' => array(3, 4)));
print_r(ArrMd2Ud($arr));

输出:
Array
(
    [0] => 1
    [1] => 2
    [2] => 1
    [3] => 2
    [4] => 1
    [5] => a
    [6] => b
    [7] => 3
    [8] => 4
)
PHP 相关文章推荐
完美解决dedecms中的[html][/html]和[code][/code]问题
Mar 20 PHP
PHP Array交叉表实现代码
Aug 05 PHP
php中filter函数验证、过滤用户输入的数据
Jan 13 PHP
codeigniter教程之多文件上传使用示例
Feb 11 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
PHP中文乱码解决方案
Mar 05 PHP
Yii中CGridView实现批量删除的方法
Dec 28 PHP
yii2局部关闭(开启)csrf的验证的实例代码
Jul 10 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
php测试kafka项目示例
Feb 06 PHP
php统计时间和内存使用情况示例分享
Mar 13 #PHP
去除php注释和去除空格函数分享
Mar 13 #PHP
支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
Mar 13 #PHP
zf框架的数据库追踪器使用示例
Mar 13 #PHP
zf框架的校验器InArray使用示例
Mar 13 #PHP
zf框架的session会话周期及次数限制使用示例
Mar 13 #PHP
zf框架的registry(注册表)使用示例
Mar 13 #PHP
You might like
php指定函数参数默认值示例代码
2013/12/04 PHP
PHP中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
js的一些常用方法小结
2011/06/29 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
10分钟掌握XML、JSON及其解析
2020/12/06 Javascript
Vue.js组件使用开发实例教程
2016/11/01 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
javascript 显示全局变量与隐式全局变量的区别
2017/02/09 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
JavaScript基于replace+正则实现ES6的字符串模版功能
2017/04/25 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
微信小程序实现判断是分享到群还是个人功能示例
2019/05/03 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
用Python制作简单的钢琴程序的教程
2015/04/01 Python
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
PyQt实现界面翻转切换效果
2018/04/20 Python
Django中的Model操作表的实现
2018/07/24 Python
Python+threading模块对单个接口进行并发测试
2019/06/25 Python
关于Keras模型可视化教程及关键问题的解决
2020/01/24 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
8款使用 CSS3 实现超炫的 Loading(加载)的动画效果
2015/03/17 HTML / CSS
ToysRus日本官网:玩具反斗城
2018/09/08 全球购物
不同浏览器创建XMLHttpRequest方法有什么不同
2014/11/17 面试题
环保建议书400字
2014/05/14 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
幼儿园2014年度工作总结
2014/11/10 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
预备党员介绍人意见
2015/06/01 职场文书
2015暑期社会实践通讯稿
2015/07/18 职场文书
Go语言实现Base64、Base58编码与解码
2021/07/26 Golang
Go语言编译原理之源码调试
2022/08/05 Golang