为json选择查询多维数组

时间:2014-05-16 12:42:33

标签: php mysql json

我真的卡住了,不知道如何解决这个问题:我想查询我的MySQL数据库,所以我有一个选择表的多维关联数组。
这个数组是我的目标:

$ar = Array(
    table1name=>Array(Array(field1=>a, field2=>b), Array(field1=>a, field2=>b)),
    table2name=>Array(Array(field1=>a, field2=>b), Array(field1=>a, field2=>b)),
    table3name=>Array(Array(field1=>a, field2=>b), Array(field1=>a, field2=>b)),

);

因此,如果我使用json_encode($ar)对其进行编码,结果应如下所示:

{
    "table1name": [
        {
            "field1": "a",
            "field2": "b",
        },
    {
            "field1": "c",
            "field2": "d"
    }
    ],
    "table2name": [
        {
            "fieldx": "1",
            "fieldy": "2",
        },
        {
            "fieldx": "3",
            "fieldy": "4"
        }
    ],
    "table3name": [
        {
            "fieldz": "1",
            "fieldq": "2",
        },
        {
            "fieldz": "3",
            "fieldq": "4"
        }
    ]
}

这是我迄今为止所做的,但没有达到预期的结果:

function tablesToJson()
{
    $mysqli = new mysqli("localhost", "user", "password", "test");
    $tables = Array();
    array_push($tables, "table1name");
    array_push($tables, "table2name");
    $finalArray = Array();

    foreach ($tables as $table) {
        if ($result = $mysqli->query('SELECT * FROM ' . $table)) {

            $rows = Array();
            while ($row = $result->fetch_assoc()) {
                $rows[] = $row;
            }
            array_push($finalArray, $rows);
        }
    }
    return $finalArray;
}

1 个答案:

答案 0 :(得分:1)

在将表格结果添加到最终阵列时,您忘记/错过了使用密钥。 而不是

array_push($finalArray, $rows);

你应该使用类似的东西:

$finalArray[$table] = $rows;

因此,您为finalResult设置了一个新的key>element组合,并根据您的要求设置了$table

function tablesToJson()
{
    $mysqli = new mysqli("localhost", "user", "password", "test");
    $tables = Array();
    array_push($tables, "table1name");
    array_push($tables, "table2name");
    $finalArray = Array();

    foreach ($tables as $table) {
        if ($result = $mysqli->query('SELECT * FROM ' . $table)) {

            $rows = Array();
            while ($row = $result->fetch_assoc()) {
                $rows[] = $row;
            }
            $finalArray[$table] = $rows;
        }
    }
    return $finalArray;
}