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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值