DB结果到层次结构 - 灵活的大小

时间:2016-12-18 21:25:30

标签: php

我有以下数据来自db(我不控制它) - 它可能只有a_id和a_title,或者它可能有a_id / a_title到z_id / z_title

如果可能:

|a_id| a_title |b_id| b_title |c_id| c_title |
|   1|A Title 1|   1|B Title 1|   1|C Title 1|
|   1|A Title 1|   1|B Title 1|   2|C Title 2|
|   1|A Title 1|   2|B Title 2|   3|C Title 3|
|   1|A Title 1|   2|B Title 2|   4|C Title 4|
|   2|A Title 2|   3|B Title 3|   5|C Title 5|
|   2|A Title 2|   3|B Title 3|   6|C Title 6|
|   2|A Title 2|   4|B Title 4|   7|C Title 7|
|   2|A Title 2|   4|B Title 4|   8|C Title 8|

|a_id| a_title |b_id| b_title |
|   1|A Title 1|   1|B Title 1|
|   1|A Title 1|   2|B Title 2|
|   2|A Title 2|   3|B Title 3|
|   2|A Title 2|   4|B Title 4|

我最终想要的是

$data = [

    '1' => [

        'id' => 1,
        'title' => 'A Title 1',
        'children' => [
            '1' => [
                'id' => 1,
                'title' => 'B Title 1',
                'children' => [
                    '1' => [
                        'id' => 1,
                        'title' => 'C Title 1',
                    ],
                    '2' => [
                        'id' => 2,
                        'title' => 'C Title 2',
                    ],
                ]
            ],
            '2' => [
                'id' => 1,
                'title' => 'B Title 2',
                'children' => [
                    '3' => [
                        'id' => 3,
                        'title' => 'C Title 3',
                    ],
                    '4' => [
                        'id' => 4,
                        'title' => 'C Title 4',
                    ],
                ]
            ],
        ],

    ],

];

我知道我期待哪些字段,例如我有以下数组:

$fields = [
    'a',
    'b',
    'c',
];

我通常会发布一些代码,但我有点不知道从哪里开始,我想知道我是否采取了错误的方法,但因为我无法控制数据库我是有点想法

谢谢!

1 个答案:

答案 0 :(得分:0)

我使用不同的方法解决了这个问题 - 它需要每个层次结构的查询,但查询不是太重,使代码更简单