首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用php从mysql数据库构建多维数组

问用php从mysql数据库构建多维数组
EN

Stack Overflow用户
提问于 2014-03-03 10:04:07
回答 1查看 97关注 0票数 2

我有一个理论上的问题,我似乎搞不懂。假设我在数据库中有以下数据:

代码语言:javascript
复制
Main    Sub1   Sub2
a       x      y
x       t      u
u       f      g

我想在PHP/mYSQL中创建一个多维数组,实际上是问“每个'main‘组件是由什么组成的?”

结果会是这样的:

代码语言:javascript
复制
Array
   (
   [0] => a
     (
     [0] => x
       (
       [0] => t
       [1] => u
       )
         (
         [0] => f
         [1] => g
         )
     [1] => y
     )
   )

我的努力产生了许多数组,而不是多维数组。

EN

回答 1

Stack Overflow用户

发布于 2014-03-03 10:15:21

你可以使用引用来解决这个问题,尽管结果会变得有点混乱:

代码语言:javascript
复制
$res = [];

foreach ($rows as $row) {
    // check if we have each sub component
    if (!isset($res[$row['sub1']])) {
        $res[$row['sub1']] = $row['sub1'];
    }
    if (!isset($res[$row['sub2']])) {
        $res[$row['sub2']] = $row['sub2'];
    }
    // build new component with references to the sub components
    $res[$row['main']] = [&$res[$row['sub1']], &$res[$row['sub2']]];
}

print_r($res);

输出

代码语言:javascript
复制
Array
(
    [x] => Array
        (
            [0] => t
            [1] => Array
                (
                    [0] => f
                    [1] => g
                )

        )

    [y] => y
    [a] => Array
        (
            [0] => Array
                (
                    [0] => t
                    [1] => Array
                        (
                            [0] => f
                            [1] => g
                        )

                )

            [1] => y
        )

    [t] => t
    [u] => Array
        (
            [0] => f
            [1] => g
        )

    [f] => f
    [g] => g
)

您可以通过仅过滤出数组来清理结果:

代码语言:javascript
复制
print_r(array_filter($res, 'is_array'));

输出

代码语言:javascript
复制
Array
(
    [x] => Array
        (
            [0] => t
            [1] => Array
                (
                    [0] => f
                    [1] => g
                )

        )

    [a] => Array
        (
            [0] => Array
                (
                    [0] => t
                    [1] => Array
                        (
                            [0] => f
                            [1] => g
                        )

                )

            [1] => y
        )

    [u] => Array
        (
            [0] => f
            [1] => g
        )

)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22137475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档