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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM