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巧获服务器端信息
Dec 06 PHP
PHP遍历并打印指定目录下所有文件实例
Feb 10 PHP
php实现的一个简单json rpc框架实例
Mar 30 PHP
PHP7之Mongodb API使用详解
Dec 26 PHP
php封装的图片(缩略图)处理类完整实例
Oct 19 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
PHP基于curl模拟post提交json数据示例
Jun 22 PHP
php 中phar包的使用教程详解
Oct 26 PHP
浅谈php://filter的妙用
Mar 05 PHP
php中pcntl_fork创建子进程的方法实例
Mar 14 PHP
php使用yield对性能提升的测试实例分析
Sep 19 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实现多条件查询实例代码
2010/07/17 PHP
thinkphp学习笔记之多表查询
2014/07/28 PHP
php获取网站根目录物理路径的几种方法(推荐)
2017/03/04 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
javascript创建函数的20种方式汇总
2015/06/23 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
原生JS轮播图插件
2017/02/09 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
Vue点击切换颜色的方法
2018/09/13 Javascript
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
pandas分区间,算频率的实例
2019/07/04 Python
python小项目之五子棋游戏
2019/12/26 Python
Python paramiko 模块浅谈与SSH主要功能模拟解析
2020/02/29 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
python 爬取免费简历模板网站的示例
2020/09/27 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
影视艺术学院毕业生自荐信
2013/11/13 职场文书
2014年大学生自我评价
2014/01/19 职场文书
开学典礼主持词
2014/03/19 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
高考学习决心书
2015/02/04 职场文书
手术室护士个人总结
2015/02/13 职场文书
岗位职责范本大全
2015/02/26 职场文书
2015年街道办事处工作总结
2015/05/22 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
高中语文教材(文学文化常识大全一)
2019/08/13 职场文书
python 详解turtle画爱心代码
2022/02/15 Python
SQL Server携程核心系统无感迁移到MySQL实战
2022/06/01 SQL Server