• 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
  • 相关阅读:
    中断API之enable_irq
    XML和Schema命名空间详解
    “低头”时代,会不会就此终结?
    巨型冰山惊现格陵兰,好莱坞大片场景上演
    半世纪以来最佳英文小说:《英国病人》
    线程锁(互斥锁Mutex)
    Python GIL(Global Interpreter Lock)
    黑暗中的生物:利用奇技淫巧快活生存
    “人工智能”造假:只有人工,没有智能
    克罗地亚:输了世界杯,却赢了全世界
  • 原文地址:https://www.cnblogs.com/yszr/p/8317045.html
Copyright © 2020-2023  润新知