zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    BZOJ 4016: [FJOI2014]最短路径树问题
    BZOJ 2599: [IOI2011]Race
    BZOJ 2152: 聪聪可可
    Codeforces Round #532 (Div. 2) Solution
    KEYENCE Programming Contest 2019 Solution
    AISing Programming Contest 2019 Solution
    Educational Codeforces Round 58 Solution
    2018-2019 ACM-ICPC, Asia East Continent Finals Solution
    Codeforces Round #530 (Div. 2) Solution
    Hello 2019 Solution
  • 原文地址:https://www.cnblogs.com/yszr/p/8317045.html
Copyright © 2011-2022 走看看