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 相关文章推荐
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
PHP中include与require使用方法区别详解
Oct 19 PHP
thinkphp的CURD和查询方式介绍
Dec 19 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
Apr 10 PHP
PHP生成数组再传给js的方法
Aug 07 PHP
PHP的switch判断语句的“高级”用法详解
Oct 01 PHP
PHP调用wsdl文件类型的接口代码分享
Nov 19 PHP
PHP 5.6.11中CURL模块问题的解决方法
Aug 08 PHP
PHP AjaxForm提交图片上传并显示图片源码
Nov 29 PHP
thinkPHP商城公告功能开发问题分析
Dec 01 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
为Plesk PHP7启用Oracle OCI8扩展方法总结
Mar 29 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脚本数据库功能详解(中)
2006/10/09 PHP
PHP 防恶意刷新实现代码
2010/05/16 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
xml和web特殊字符
2009/04/28 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
javascript 回调函数详解
2014/11/11 Javascript
jquery实现的3D旋转木马特效代码分享
2015/08/25 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
jquery在ie7下选择器的问题导致append失效的解决方法
2016/01/10 Javascript
JavaScript File API文件上传预览
2016/02/02 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
基于Bootstrap模态对话框只加载一次 remote 数据的解决方法
2017/07/09 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
Python中的getopt函数使用详解
2015/07/28 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
简单谈谈python中的语句和语法
2017/08/10 Python
浅谈python 里面的单下划线与双下划线的区别
2017/12/01 Python
一份python入门应该看的学习资料
2018/04/11 Python
python异步存储数据详解
2019/03/19 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
django中media媒体路径设置的步骤
2019/11/15 Python
tensorflow 实现数据类型转换
2020/02/17 Python
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
Speedo速比涛中国官方网站:全球领先泳装运动品牌
2018/04/24 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
如何通过jdbc调用存储过程
2012/04/19 面试题
学校对教师的评语
2014/04/28 职场文书
任命书模板
2014/06/04 职场文书
演讲开场白台词大全
2015/05/29 职场文书
祝酒词范文
2015/08/12 职场文书
Python机器学习之决策树和随机森林
2021/07/15 Javascript