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生成静态页
Nov 25 PHP
PHP中MD5函数使用实例代码
Jun 07 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
Aug 20 PHP
php使用ereg验证文件上传的方法
Dec 16 PHP
php的闭包(Closure)匿名函数详解
Feb 22 PHP
php实现数组中索引关联数据转换成json对象的方法
Jul 08 PHP
PHP中的Session对象如何使用
Sep 25 PHP
php精确的统计在线人数的方法
Oct 21 PHP
php自定义函数实现汉字转换utf8编码的方法
Sep 29 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 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
推荐10个提供免费PHP脚本下载的网站
2014/12/31 PHP
分享一个Laravel好用的Cache宏
2015/03/02 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
2017/05/05 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
简单了解JavaScript arguement原理及作用
2020/05/28 Javascript
[01:44]Ti10举办地公布
2019/08/25 DOTA
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
微信跳一跳python代码实现
2018/01/05 Python
python 2.7.13 安装配置方法图文教程
2018/09/18 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
2020/02/11 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
python 带时区的日期格式化操作
2020/10/23 Python
澳大利亚办公室装修:JasonL Office Furniture
2019/06/25 全球购物
世界汽车零件:World Car Parts
2019/09/04 全球购物
音乐专业应届生教师求职信
2013/11/04 职场文书
运动会100米解说词
2014/01/23 职场文书
淘宝店铺营销方案
2014/02/13 职场文书
大学生个人自荐信
2014/02/24 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
高中生第一学年自我鉴定2015
2014/09/28 职场文书
经营目标责任书
2015/05/08 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
话题作文之呼唤
2019/12/18 职场文书
如何利用 CSS Overview 面板重构优化你的网站
2021/10/24 HTML / CSS
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python
nginx 添加http_stub_status_module模块
2022/05/25 Servers
python manim实现排序算法动画示例
2022/08/14 Python