• PHP多维数组转为一维数组的方法实例


    1. 使用foreach

    function array_foreach($arr) {
        static $tmp = array();
        if (!is_array ($arr)) {
            return false;
        }
        foreach ($arr as $val ) {
            if (is_array ($val)) {
                array_foreach($val);
            }
            else {
                $tmp[]=$val;
            }
        }
        return $tmp;
    }
    
    // 调用例子
    $arr = array(1,2=>array(3,4=>array(5,6)),7);
    print_r(array_foreach($arr)); // Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 6 [4] => 7 )

    2. 使用for循环,只能遍历数字下标的数组

    function array_for($arr) {
        static $tmp = array();
        for($i=0; $i<count($arr); $i++) {
            if(is_array($arr[$i])) {
                array_for($arr[$i]);
            } else {
                $tmp[]=$arr[$i];
            }
        }
        return $tmp;
    }
    // 调用例子
    $arr = array(1,array(3,array(5,6)),7);
    print_r(array_for($arr)); // Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 6 [4] => 7 )

    3. 使用while

    function array_while($arr) {
        // 将数值第一元素作为容器,作地址赋值。
        $ar_room = &$arr[key($arr)];
        // 第一容器不是数组进去转呀
        if (!is_array($ar_room)) {
            // 转为成数组
            $ar_room = array($ar_room);
        }
        // 指针下移
        next($arr);
        // 遍历
        while (list($k, $v) = each($arr)) {
            // 是数组就递归深挖,不是就转成数组
            $v = is_array($v) ? call_user_func(__FUNCTION__, $v) : array($v);
            // 递归合并
            $ar_room = array_merge_recursive($ar_room, $v);
            // 释放当前下标的数组元素
            unset($arr[$k]);
        }
        return $ar_room;
    }
    
    $arr = array(1, 2, 3 => array(1, 2, 'ar' => array(1, 2 => array('a', 'b'))), array('ar' => array(3, 4)));
    print_r(array_while($arr)); // Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 2 [4] => 1 [5] => a [6] => b [7] => 3 [8] => 4 )
  • 相关阅读:
    [在Windows上使用Unix工具]MKS
    [MySQL]导入导出
    《Excel与VBA程序设计》写作计划
    由Google Map API想开去
    《Excel与VBA程序设计》第七章
    转载:东拉西扯:产业链
    Google ToolBar 3.0 Beta试用
    UI和界面可用性设计
    《Excel与VBA程序设计》第一章
    关于通过COM自动化调用Excel的效率问题
  • 原文地址:https://www.cnblogs.com/chenjiacheng/p/6522616.html
Copyright © 2020-2023  润新知