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+java实现自动新闻滚动窗口
Oct 09 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
基于header的一些常用指令详解
Jun 06 PHP
php中sql注入漏洞示例 sql注入漏洞修复
Jan 24 PHP
php不写闭合标签的好处
Mar 04 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
php获取网页中图片、DIV内容的简单方法
Jun 19 PHP
ThinkPHP3.1新特性之字段合法性检测详解
Jun 19 PHP
Linux下php5.4启动脚本
Aug 03 PHP
php文件上传的两种实现方法
Apr 04 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
Apr 19 PHP
PHP+redis实现微博的推模型案例分析
Jul 10 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 FPDF类库应用实现代码
2009/03/20 PHP
PHP编程风格规范分享
2014/01/15 PHP
laravel框架之数据库查出来的对象实现转化为数组
2019/10/23 PHP
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
Javascript节点关系实例分析
2015/05/15 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
webpack入门必知必会
2017/01/16 Javascript
JS中的phototype详解
2017/02/04 Javascript
AngularJS $http模块POST请求实现
2017/04/08 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
编写一个javascript元循环求值器的方法
2020/04/14 Javascript
微信小程序文章列表功能完整实例
2020/06/03 Javascript
OpenLayers3实现图层控件功能
2020/09/25 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
[02:36]DOTA2上海特锦赛 回忆电竞生涯的重要瞬间
2016/03/25 DOTA
win7安装python生成随机数代码分享
2013/12/27 Python
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
如何将python中的List转化成dictionary
2016/08/15 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
Python Flask 搭建微信小程序后台详解
2019/05/06 Python
python脚本执行CMD命令并返回结果的例子
2019/08/14 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
天美时手表加拿大官网:Timex加拿大
2016/09/01 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
请解释virtual关键字的含义
2015/06/17 面试题
大学生自我鉴定
2013/12/16 职场文书
个人工作表现评价材料
2014/09/21 职场文书
离婚财产处理协议书
2014/09/30 职场文书
PostgreSQL将数据加载到buffer cache中操作方法
2021/04/16 PostgreSQL
Android Canvas绘制文字横纵向对齐
2022/06/05 Java/Android
Oracle 11g数据库使用expdp每周进行数据备份并上传到备份服务器
2022/06/28 Oracle