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 相关文章推荐
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
PHP实现根据浏览器跳转不同语言页面代码
Aug 02 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
19个Android常用工具类汇总
Dec 30 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
php实现TCP端口检测的方法
Apr 01 PHP
是 WordPress 让 PHP 更流行了 而不是框架
Feb 03 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
Feb 28 PHP
PHP实现批量清空删除指定文件夹所有内容的方法
May 30 PHP
YII框架中使用memcache的方法详解
Aug 02 PHP
PHP扩展Swoole实现实时异步任务队列示例
Apr 13 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_MySQL教程-第一天
2007/03/18 PHP
使用XDebug调试及单元测试覆盖率分析
2011/01/27 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
php 判断IP为有效IP地址的方法
2018/01/28 PHP
laravel 执行迁移回滚示例
2019/10/23 PHP
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
alert出数组中的随即值代码
2014/09/25 Javascript
jQuery搜索子元素的方法
2015/02/10 Javascript
javascript断点调试心得分享
2016/04/23 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
微信小程序request出现400的问题解决办法
2017/05/23 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
基于Vue2.0+ElementUI实现表格翻页功能
2017/10/23 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
vue.js父子组件通信动态绑定的实例
2018/09/28 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
Python中每次处理一个字符的5种方法
2015/05/21 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
通过python扫描二维码/条形码并打印数据
2019/11/14 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
详解css3中 text-fill-color属性
2019/07/08 HTML / CSS
韩国最大的购物网站:Gmarket
2019/06/20 全球购物
工程技术员岗位职责
2014/03/02 职场文书
个人银行贷款担保书
2014/04/01 职场文书
土地转让协议书范本
2014/04/15 职场文书
远程培训的心得体会
2014/09/01 职场文书
公务员考察材料范文
2014/12/23 职场文书
社区服务活动报告
2015/02/05 职场文书
西湖英语导游词
2015/02/06 职场文书
化工厂员工工作总结
2015/10/15 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL