php六维数组的处理求助

Mechnaic 2017-02-27 05:21:45
请求接口得到的数据,转化为数组是 一个多维数组,现在想将这个多维数据进行入库(自己建立的库)以及模板渲染,请问如何解决

代码如下:
Array
(
[0] => Array
(
[name] => 奥迪
[initial] => A
[logo] => null
[models] => Array
(
[0] => Array
(
[name] => S5
[submodels] => Array
(
[0] => Array
(
[id] => 691005116
[engine_displacement] => 3.0 T
[year_range] => 2009-2012
[full_name] => 奥迪 S5 Sportback 3.0 T 2009-2012
)

)

)

[1] => Array
(
[name] => S6
[submodels] => Array
(
[0] => Array
(
[id] => 483927584
[engine_displacement] => 4.0T
[year_range] => 2012.04-2014
[full_name] => 奥迪 S6 4.0T 2012.04-2014
)

)

)
)
...全文
192 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
傲雪星枫 2017-03-02
  • 打赏
  • 举报
回复
转换后的是一个三维数组,而且不是列表。 这样才容易入库。

Array
        [0] => Array(
            [name] => 奥迪
            [initial] => A
            [logo] => null
            [models_name] => S5
            [models_submodels_id] => 691005116
            [models_submodels_engine_displacement] => 3.0 T
            [models_submodels_year_range] => 2009-2012
            [models_submodels_full_name] => 奥迪 S5 Sportback 3.0 T 2009-2012
         )
)
Mechnaic 2017-03-02
  • 打赏
  • 举报
回复
引用 6 楼 fdipzone 的回复:
转换后的是一个三维数组,而且不是列表。 这样才容易入库。

Array
        [0] => Array(
            [name] => 奥迪
            [initial] => A
            [logo] => null
            [models_name] => S5
            [models_submodels_id] => 691005116
            [models_submodels_engine_displacement] => 3.0 T
            [models_submodels_year_range] => 2009-2012
            [models_submodels_full_name] => 奥迪 S5 Sportback 3.0 T 2009-2012
         )
)
这个可行,但是这个数组我不会处理,对数组的处理很头疼 请求帮助,十分感谢
Mechnaic 2017-03-02
  • 打赏
  • 举报
回复
引用 9 楼 fdipzone 的回复:

$arr = array(
0 => array(
        'name' => '奥迪',
        'initial' => 'A',
        'logo' => null,
        'models' => array(
            0 => array(
                'name' => 'S5',
                'submodels' => array(
                    0 => array(
                        'id' => 691005116,
                        'engine_displacement' => '3.0 T',
                        'year_range' => '2009-2012',
                        'full_name' => '奥迪 S5 Sportback 3.0 T 2009-2012'
                    ),
                ),
            ),
            1 => array(
                'name' => 'S6',
                'submodels' => array(
                    0 => array(
                        'id' => 483927584,
                        'engine_displacement' => '4.0T',
                        'year_range' => '2012.04-2014',
                        'full_name' => '奥迪 S6  4.0T  2012.04-2014'
                    ),
                ),
            ),
        ),
    ),
);

$result = handle($arr);

print_r($result);

function handle($arr){
    $result = array();

    foreach($arr as $k=>$v){
        foreach($v['models'] as $kk=>$vv){
            foreach($vv['submodels'] as $kkk=>$vvv){
                $tmp = array();
                $tmp['name'] = $v['name'];
                $tmp['initial'] = $v['initial'];
                $tmp['logo'] = $v['logo'];
                $tmp['models_name'] = $vv['name'];
                $tmp['models_submodels_id'] = $vvv['id'];
                $tmp['models_submodels_engine_displacement'] = $vvv['engine_displacement'];
                $tmp['models_submodels_year_range'] = $vvv['year_range'];
                $tmp['models_submodels_full_name'] = $vvv['full_name'];
                $result[] = $tmp;
            }
        }
    }

    return $result;
}


Array
(
    [0] => Array
        (
            [name] => 奥迪
            [initial] => A
            [logo] => 
            [models_name] => S5
            [models_submodels_id] => 691005116
            [models_submodels_engine_displacement] => 3.0 T
            [models_submodels_year_range] => 2009-2012
            [models_submodels_full_name] => 奥迪 S5 Sportback 3.0 T 2009-2012
        )

    [1] => Array
        (
            [name] => 奥迪
            [initial] => A
            [logo] => 
            [models_name] => S6
            [models_submodels_id] => 483927584
            [models_submodels_engine_displacement] => 4.0T
            [models_submodels_year_range] => 2012.04-2014
            [models_submodels_full_name] => 奥迪 S6  4.0T  2012.04-2014
        )

)

感谢
傲雪星枫 2017-03-02
  • 打赏
  • 举报
回复

$arr = array(
0 => array(
        'name' => '奥迪',
        'initial' => 'A',
        'logo' => null,
        'models' => array(
            0 => array(
                'name' => 'S5',
                'submodels' => array(
                    0 => array(
                        'id' => 691005116,
                        'engine_displacement' => '3.0 T',
                        'year_range' => '2009-2012',
                        'full_name' => '奥迪 S5 Sportback 3.0 T 2009-2012'
                    ),
                ),
            ),
            1 => array(
                'name' => 'S6',
                'submodels' => array(
                    0 => array(
                        'id' => 483927584,
                        'engine_displacement' => '4.0T',
                        'year_range' => '2012.04-2014',
                        'full_name' => '奥迪 S6  4.0T  2012.04-2014'
                    ),
                ),
            ),
        ),
    ),
);

$result = handle($arr);

print_r($result);

function handle($arr){
    $result = array();

    foreach($arr as $k=>$v){
        foreach($v['models'] as $kk=>$vv){
            foreach($vv['submodels'] as $kkk=>$vvv){
                $tmp = array();
                $tmp['name'] = $v['name'];
                $tmp['initial'] = $v['initial'];
                $tmp['logo'] = $v['logo'];
                $tmp['models_name'] = $vv['name'];
                $tmp['models_submodels_id'] = $vvv['id'];
                $tmp['models_submodels_engine_displacement'] = $vvv['engine_displacement'];
                $tmp['models_submodels_year_range'] = $vvv['year_range'];
                $tmp['models_submodels_full_name'] = $vvv['full_name'];
                $result[] = $tmp;
            }
        }
    }

    return $result;
}


Array
(
    [0] => Array
        (
            [name] => 奥迪
            [initial] => A
            [logo] => 
            [models_name] => S5
            [models_submodels_id] => 691005116
            [models_submodels_engine_displacement] => 3.0 T
            [models_submodels_year_range] => 2009-2012
            [models_submodels_full_name] => 奥迪 S5 Sportback 3.0 T 2009-2012
        )

    [1] => Array
        (
            [name] => 奥迪
            [initial] => A
            [logo] => 
            [models_name] => S6
            [models_submodels_id] => 483927584
            [models_submodels_engine_displacement] => 4.0T
            [models_submodels_year_range] => 2012.04-2014
            [models_submodels_full_name] => 奥迪 S6  4.0T  2012.04-2014
        )

)

cwk44 2017-03-02
  • 打赏
  • 举报
回复
根据范式确实应该整三张表,但我觉得有别的方法 第一维和第二维字段差不多,其实可以整一张表 id pid name xxx 第一维pid就是0 第二维pid就是第一维的id 第三维度信息最多,单独建一张表,一个字段关联前面第二维的id 这样设计查询、连表什么的相对比较方便,冗余也比较少
Mechnaic 2017-03-01
  • 打赏
  • 举报
回复
引用 4 楼 jordan102 的回复:
那就说一下转成什么样的二维数组和转换标准

Array
        (
            [name] => 奥迪
            [initial] => A
            [logo] => null
            [models] => Array
                (
                              [name] => S5
                              [submodels] => Array
                                (
                                           [id] => 691005116
                                            [engine_displacement] => 3.0 T
                                            [year_range] => 2009-2012
                                            [full_name] => 奥迪 S5 Sportback 3.0 T 2009-2012
                                  )
                   )
)
这样的吧,谢谢
一起混吧 2017-02-28
  • 打赏
  • 举报
回复
那就说一下转成什么样的二维数组和转换标准
Mechnaic 2017-02-27
  • 打赏
  • 举报
回复
引用 1 楼 jordan102 的回复:
数组都有了,根据键取就是了。
我想把它转化为二维数组,不会
xuzuning 2017-02-27
  • 打赏
  • 举报
回复
可以直接存储序列化或json 要拆分的话,请给出你的表结构 按照范式3,你可能需要创建3个表
一起混吧 2017-02-27
  • 打赏
  • 举报
回复
数组都有了,根据键取就是了。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧