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中几种常见安全设置详解
Apr 06 PHP
mysql 查询指定日期时间内sql语句实现原理与代码
Dec 16 PHP
PHP 清空varnish 缓存的详解(包括指定站点下的)
Jun 20 PHP
PHP小技巧之函数重载
Jun 02 PHP
PHP中的插件机制原理和实例
Jul 08 PHP
浅谈thinkphp的实例化模型
Jan 04 PHP
详解PHP实现定时任务的五种方法
Jul 25 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
Apr 26 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 PHP
php常用的工具开发整理
Sep 26 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
Nov 09 PHP
PHP强制转化的形式整理
May 22 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
为php4加入动态flash文件的生成的支持
2006/10/09 PHP
PHP连接MySQL查询结果中文显示乱码解决方法
2013/10/25 PHP
PHP静态成员变量
2017/02/14 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
关于jquery的多个选择器的使用示例
2013/10/18 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
JS实现简易图片轮播效果的方法
2015/03/25 Javascript
Javascript 计算字符串在localStorage中所占字节数
2015/10/21 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
vue element table中自定义一些input的验证操作
2020/07/18 Javascript
python实现的jpg格式图片修复代码
2015/04/21 Python
python中json格式数据输出的简单实现方法
2016/10/31 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
Python实现的括号匹配判断功能示例
2018/08/25 Python
python tkinter窗口最大化的实现
2019/07/15 Python
Pytorch释放显存占用方式
2020/01/13 Python
python删除文件、清空目录的实现方法
2020/09/23 Python
HTML+CSS3+JS 实现的下拉菜单
2020/11/25 HTML / CSS
台湾网友喜爱的综合型网路购物商城:Yahoo! 奇摩购物中心
2018/03/10 全球购物
伦敦新晋轻奢耳饰潮牌:Tada & Toy
2020/05/25 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
翻译专业应届生求职信
2013/11/23 职场文书
毕业自我鉴定怎么写
2014/03/25 职场文书
团队队名口号大全
2014/06/06 职场文书
2016年小学植树节活动总结
2016/03/16 职场文书
HTML速写之Emmet语法规则的实现
2021/04/07 HTML / CSS
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL