入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2016-11-28 投稿人: 浏览次数:3780

        在平常的项目开发中我们多会用到让多维数组转化为一维数组的情况,但是很多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
    )

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。