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邮件专题
Oct 09 PHP
php addslashes 函数详细分析说明
Jun 23 PHP
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
Aug 07 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
PHP中使用imagick生成PSD文件缩略图教程
Jan 26 PHP
PHP列出MySQL中所有数据库的方法
Mar 12 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
Jan 17 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 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 短链接算法收集与分析
2011/12/30 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
PHP判断是否有Get参数的方法
2014/05/05 PHP
JSONP 跨域共享信息
2012/08/16 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
2013/12/29 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
利用 spin.js 生成等待效果(js 等待效果)
2017/06/25 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
jquery实现左右轮播图效果
2017/09/28 jQuery
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
Vue+mui实现图片的本地缓存示例代码
2018/05/24 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
ionic2.0双击返回键退出应用
2019/09/17 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[01:18]PWL开团时刻DAY4——圣剑与抢盾
2020/11/03 DOTA
[50:02]完美世界DOTA2联赛PWL S2 Magma vs FTD 第三场 11.29
2020/12/03 DOTA
Python Tkinter简单布局实例教程
2014/09/03 Python
在Python中使用Neo4j数据库的教程
2015/04/16 Python
python创建文件备份的脚本
2018/09/11 Python
Python的Tkinter点击按钮触发事件的例子
2019/07/19 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
Django多个app urls配置代码实例
2020/11/26 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
项目副经理岗位职责
2013/12/30 职场文书
社会学专业求职信
2014/07/17 职场文书
红色旅游心得体会
2014/09/03 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技