PHP开发小技巧③—实现多维数组转化为一维数组

 在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多Programmer不会将其进行转化,也有些没有想到很好的算法然后经过乱起八糟的运算方式将其勉强转化好,但是所写的程序代码冗余非常的大,造成程序的时间复杂度以及空间复杂度非常大。下面就讲述一下我是如何实现这一情况,并且代码简单明了。

        实现方法:

                Ⅰ 使用递归调用;
                Ⅱ 首先定义一个静态数组常量用来保存结果;
                Ⅲ 对多维数组进行循环;
                Ⅳ 判断是否是数组,如果是递归调用方法;
                Ⅴ 如果不是,将结果放入静态数组常量;
                Ⅵ 返回结果(静态数组常量)。

        实现代码:

 

[php] view plain copy
 
  1. <?php  
  2.   
  3. /** 
  4.  * ======================================= 
  5.  * Created by Zhihua_W. 
  6.  * Author: Zhihua_W 
  7.  * Date: 2016/11/28 0003 
  8.  * Time: 上午 9:11 
  9.  * Project: PHP开发小技巧 
  10.  * Power: 实现多维数组转化为一维数组 
  11.  * ======================================= 
  12.  */  
  13.   
  14. /** 
  15.  * 多维数组转化为一维数组 
  16.  * @param array $array 多维数组 
  17.  * @return array $result_array 一维数组 
  18.  */  
  19. function array_multi2single($array)  
  20. {  
  21.     //首先定义一个静态数组常量用来保存结果  
  22.     static $result_array = array();  
  23.     //对多维数组进行循环  
  24.     foreach ($array as $value) {  
  25.         //判断是否是数组,如果是递归调用方法  
  26.         if (is_array($value)) {  
  27.             array_multi2single($value);  
  28.         } else  //如果不是,将结果放入静态数组常量  
  29.             $result_array [] = $value;  
  30.     }  
  31.     //返回结果(静态数组常量)  
  32.     return $result_array;  
  33. }  
  34.   
  35. $arr = array(  
  36.     array(  
  37.         'name' => 'a',  
  38.         'sex' => 'm',  
  39.         'sort' => 5  
  40.     ),  
  41.     array(  
  42.         'name' => 'c',  
  43.         'sex' => 'm',  
  44.         'sort' => 8  
  45.     ),  
  46.     array(  
  47.         'name' => 'g',  
  48.         'sex' => 'm',  
  49.         'sort' => 3  
  50.     ),  
  51.     array(  
  52.         'name' => 'e',  
  53.         'sex' => 'w',  
  54.         'sort' => 6  
  55.     ),  
  56.     array(  
  57.         'name' => 'b',  
  58.         'sex' => 'w',  
  59.         'sort' => 2  
  60.     ),  
  61. );  
  62.   
  63. print_r(array_multi2single($arr));  
  64.   
  65. ?>  

        打印结果,实现多维数组转化为一维数组:

 

[plain] view plain copy
 
  1. Array  
  2. (  
  3.     [0] => a  
  4.     [1] => m  
  5.     [2] => 5  
  6.     [3] => c  
  7.     [4] => m  
  8.     [5] => 8  
  9.     [6] => g  
  10.     [7] => m  
  11.     [8] => 3  
  12.     [9] => e  
  13.     [10] => w  
  14.     [11] => 6  
  15.     [12] => b  
  16.     [13] => w  
  17.     [14] => 2  
  18. )  

 

版权声明:转载时请标注http://blog.csdn.net/zhihua_w
posted @ 2018-01-19 15:08  御世制人  阅读(1661)  评论(0编辑  收藏  举报