在平常的項目開發中我們多會用到讓多維數組轉化為一維數組的情況,但是很多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
- )
版權聲明:轉載時請標注http://blog.csdn.net/zhihua_w
- 本文已收錄於以下專欄:
- PHP開發小技巧