将Excel数据更改为多维数组 [英] Change excel data into a multidimensional array

查看:147
本文介绍了将Excel数据更改为多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何我将此excel文件转换为以下数组格式

How can I convert this excel file into following array format

Array [Test's Restaurant] => Array
(
    [Appetizer] => Array
        (
            [Salsa & Chips] => Array
                (
                    [Radio] => Array
                        (
                            [0] => Coke
                            [1] => Sprite
                            [2] => Diet Coke
                            [3] => Diet Sprite
                        )

                    [Checkbox] => Array
                        (
                            [0] => Chocolate Cake
                            [1] => Vanilla Cake
                        )

                )

            [Salad] => Array
                (
                    [Radio] => Array
                        (
                            [0] => Italian
                            [2] => French
                            [3] => Ranch
                        )

                )

        )

    [Lunch Menu] => Array
        (
            [Burrito] => Array
                (
                    [Radio] => Array
                        (
                            [0] => Roll
                            [1] => Steak
                            [3] => Chicken
                        )

                    [Checkbox] => Array
                        (
                            [0] => Coke
                            [1] => Sprite
                            [3] => Diet Coke
                        )

                )
)

)


推荐答案

我已经尝试过了

//这给出了phpExcel库导入函数返回的主数组

// This gives the main array that is returned by the phpExcel Library import function

$mdar = phpexcel_import($path);
arrange_array($mdar[0]);

function arrange_array($mdar){

    $mainarr = array();
    $arr = array();
    $j = count($mdar);

    for($a = 0 ; $a <=$j ; $a++ ){
        if(!empty($mdar[$a]['Menu Category']))
        {
            $b = next_point($mdar,$a,$j);
            $mainarr[$mdar[$a]['Menu Category']] = arrange_array2($mdar,$a,($b-1));
            $arr = $mainarr;
        }

    }

}

function next_point($mdar,$last,$j){
    //echo 'next_point $mdar '.$mdar.'next_point $last '.$last.' next_point $j '.$j .'<br>';
     for($a = $last ; $a <=$j ; $a++ ){
        if(!empty($mdar[$a]['Menu Category']))
        {
            $arr[] = $a;
        }
    }
    return $arr[1];
}

function arrange_array2($mdar,$sp,$lp){

    $arr = array();
    for($a = $sp ; $a <=$lp ; $a++ ){
        if(!empty($mdar[$a]['Menu Item']))
        {
            $b = next_point2($mdar,$a,$lp);
            $mainarr[$mdar[$a]['Menu Item']] = arrange_array3($mdar,$a,$b);
            $arr = $mainarr;
        }
    }
    return $arr;
}

function next_point2($mdar,$last,$j){
   // echo 'next_point2 $mdar '.$mdar.' next_point2 $last '.$last.' next_point2 $j '.$j .'<br>';
     for($a = $last ; $a <=$j ; $a++ ){
        if(!empty($mdar[$a]['Menu Item'])){
            $arr[] = $a;
        }
    }
    echo "next point 2 ";
    print_r($arr);

    return ($arr[1])?$arr[1]-1:$arr[0];
}

function arrange_array3($mdar,$sp,$lp){
   //echo 'next_point2 $mdar '.$mdar.' next_point2 $sp '.$sp.' next_point2 $j '.$lp .'<br>';
    $arr = array();
    for($a = $sp ; $a <=$lp ; $a++){
        if(!empty($mdar[$a]['Menu Item option type']))
        {
            $b = next_point3($mdar,$a,$lp);
            $mainarr[$mdar[$a]['Menu Item option type']] = arrange_array4($mdar,$a,$b);
            $arr = $mainarr;
        }
    }

    return $arr;
}

function next_point3($mdar,$last,$j){
   // echo 'next_point2 $mdar '.$mdar.' next_point2 $last '.$last.' next_point2 $j '.$j .'<br>';
     for($a = $last ; $a <=$j ; $a++ ){
        if(!empty($mdar[$a]['Menu Item option type']))
        {
            $arr[] = $a;
        }
    }
    return ($arr[1])?$arr[1]-1:$arr[0];
}
function arrange_array4($mdar,$sp,$lp){

    for($a = $sp ; $a <=$lp ; $a++ ){
        if(!empty($mdar[$a]['Menu Option Values']))
        {
            $arr[] = $mdar[$a]['Menu Option Values'];
        }
    }

    return $arr;

}

这篇关于将Excel数据更改为多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆