当前位置:首页 > PHP教程 > php数组 > 列表

3个PHP多维数组转为一维数组的方法实例

发布:smiling 来源: PHP粉丝网  添加日期:2020-10-28 09:52:40 浏览: 评论:0 

这篇文章主要介绍了3个PHP多维数组转为一维数组的方法实例,分别使用foreach、for、while三种循环方法来实现,需要的朋友可以参考下。

很多时候我们需要将多维数组转成一维数组,因为我们只需要一维数组,而且一维数组使用起来更方便,在PHP中如何将多维数组转成一维数组?下面我们来看看三个多维数组转为一维数组例子:

一、使用foreach,代码如下:

  1. <?php 
  2.    function arr_foreach ($arr)  
  3.    { 
  4.       static $tmp=array();   
  5.       if (!is_array ($arr))  
  6.       { 
  7.          return false; 
  8.       } 
  9.       foreach ($arr as $val )  
  10.       { 
  11.          if (is_array ($val))  
  12.          { 
  13.             arr_foreach ($val); 
  14.          }  
  15.          else  
  16.          { 
  17.             $tmp[]=$val
  18.          } 
  19.       } 
  20.       return $tmp
  21.    } 
  22.    $a = array(1,2=>array(3,4=>array(5,6)),7); 
  23.    print_r(arr_foreach($a)); 
  24. ?> 

二、使用for循环,只能遍历数字下标的数组,代码如下:

  1. <?php 
  2.    function arr_foreach($arr
  3.    { 
  4.       static $tmp=array();   
  5.  
  6.       for($i=0; $i<count($arr); $i++) 
  7.       {   
  8.          if(is_array($arr[$i])) 
  9.          {   
  10.             arr_foreach($arr[$i]);   
  11.          }else{   
  12.             $tmp[]=$arr[$i];   
  13.          }   
  14.       }   
  15.  
  16.       return $tmp;   
  17.    }  
  18.    //调用例子 
  19.    $a = array(1,array(3,array(5,6)),7); 
  20.    print_r(arr_foreach($a)); 
  21. ?> 

三、使用while,代码如下:

  1. /** 
  2.  * 将多维数组转为一维数组 
  3.  * @author echo 
  4.  * @link https://www.jb51.net/ 
  5.  * @param array $arr 
  6.  * @return array 
  7.  */ 
  8. function ArrMd2Ud($arr) { 
  9.  #将数值第一元素作为容器,作地址赋值。 
  10.  $ar_room = &$arr[key($arr)]; 
  11.  #第一容器不是数组进去转呀 
  12.  if (!is_array($ar_room)) { 
  13.   #转为成数组 
  14.   $ar_room = array($ar_room); 
  15.  } 
  16.  #指针下移 
  17.  next($arr); 
  18.  #遍历 
  19.  while (list($k$v) = each($arr)) { 
  20.   #是数组就递归深挖,不是就转成数组 
  21.   $v = is_array($v) ? call_user_func(__FUNCTION__$v) : array($v); 
  22.   #递归合并 
  23.   $ar_room = array_merge_recursive($ar_room$v); 
  24.   #释放当前下标的数组元素 
  25.   unset($arr[$k]); 
  26.  } 
  27.  return $ar_room

调用示例:

  1. $arr = array(1, 2, 3 => array(1, 2, 'ar' => array(1, 2 => array('a''b'))), array('ar' => array(3, 4))); 
  2. print_r(ArrMd2Ud($arr)); 

输出:

  1. Array 
  2.     [0] => 1 
  3.     [1] => 2 
  4.     [2] => 1 
  5.     [3] => 2 
  6.     [4] => 1 
  7.     [5] => a 
  8.     [6] => b 
  9.     [7] => 3 
  10.     [8] => 4 

Tags: PHP多维数组 PHP一维数组

分享到: