php - 使用php从mysql数据库构建多维数组

标签 php mysql multidimensional-array

我有一个理论问题,我似乎无法弄清楚。假设我在数据库中有以下数据:

Main    Sub1   Sub2
a       x      y
x       t      u
u       f      g

我想在 PHP/mYSQL 中创建一个多维数组,本质上是询问“每个‘主要’组件是由什么组成的?”

结果会是这样的:

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

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

最佳答案

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

$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);

输出

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
)

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

print_r(array_filter($res, 'is_array'));

输出

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
        )

)

关于php - 使用php从mysql数据库构建多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22137475/

相关文章:

php - 如何使用 PHP Web 服务从 MySQL 将值显示到 Android 客户端

php - 使用时间发布表单

mysql - 如何在连接语句中计数

php - 选择所有最新关系为真的地方?

mysql - ColdFusion:在整个页面中使用相同的查询

C++ 将二维数组传递给构造函数(没有已知的转换错误)

c# - 编译器错误 : Invalid rank specifier: expected' ,' or ' ]' on Two Dimensional Array Initialization

javascript - 用于 Ext JS 的简单 REST API

php - 使用 Swift_Message 发送邮件时如何更改发件人的姓名文本?

php - 在 php 中使用多维数组和对象