在平常的項目開發中我們多會用到讓多維陣列轉化為一維數組的情況,但是很多Programmer不會將其進行轉化,也有些沒有想到很好的演算法然後經過亂起八糟的運算方式將其勉強轉化好,但是所寫的程式碼冗餘非常的大,造成程式的時間複雜度以及空間複雜度非常大。下面就講述一下我是如何?這一情況,並且代碼簡單明了。
實現方法:
Ⅰ 使用遞迴調用;
Ⅱ 首先定義一個靜態常數陣列用來儲存結果;
Ⅲ 對多維陣列進行迴圈;
Ⅳ 判斷是否是數組,如果是遞迴調用方法;
Ⅴ 如果不是,將結果放入靜態常數陣列;
Ⅵ 返回結果(靜態常數陣列)。
實現代碼:
<?php /** * ======================================= * Created by Zhihua_W. * Author: Zhihua_W * Date: 2016/11/28 0003 * Time: 上午 9:11 * Project: PHP開發小技巧 * Power: 實現多維陣列轉化為一維數組 * ======================================= */ /** * 多維陣列轉化為一維數組 * @param array $array 多維陣列 * @return array $result_array 一維數組 */ function array_multi2single($array) { //首先定義一個靜態常數陣列用來儲存結果 static $result_array = array(); //對多維陣列進行迴圈 foreach ($array as $value) { //判斷是否是數組,如果是遞迴調用方法 if (is_array($value)) { array_multi2single($value); } else //如果不是,將結果放入靜態常數陣列 $result_array [] = $value; } //返回結果(靜態常數陣列) return $result_array; } $arr = array( array( 'name' => 'a', 'sex' => 'm', 'sort' => 5 ), array( 'name' => 'c', 'sex' => 'm', 'sort' => 8 ), array( 'name' => 'g', 'sex' => 'm', 'sort' => 3 ), array( 'name' => 'e', 'sex' => 'w', 'sort' => 6 ), array( 'name' => 'b', 'sex' => 'w', 'sort' => 2 ), ); print_r(array_multi2single($arr)); ?>
列印結果,實現多維陣列轉化為一維數組:
Array ( [0] => a [1] => m [2] => 5 [3] => c [4] => m [5] => 8 [6] => g [7] => m [8] => 3 [9] => e [10] => w [11] => 6 [12] => b [13] => w [14] => 2 )