分享

PHP开发小技巧③—实现多维数组转化为一维数组

 小马哥技术屋 2016-12-20
在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多Programmer不会将其进行转化,也有些没有想到很好的算法然后经过乱起八糟的运算方式将其勉强转化好,但是所写的程序代码冗余非常的大,造成程序的时间复杂度以及空间复杂度非常大。下面就讲述一下我是如何实现这一情况,并且代码简单明了。

        实现方法:

                Ⅰ 使用递归调用;
                Ⅱ 首先定义一个静态数组常量用来保存结果;
                Ⅲ 对多维数组进行循环;
                Ⅳ 判断是否是数组,如果是递归调用方法;
                Ⅴ 如果不是,将结果放入静态数组常量;
                Ⅵ 返回结果(静态数组常量)。

        实现代码:

  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 在CODE上查看代码片派生到我的代码片
  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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多