duan88014 2014-05-16 12:42
浏览 572
已采纳

为json选择查询多维数组

I'm really stuck and don't know how to tackle this: I'd like to query my MySQL database so I have a multidimensional associative Array of selected tables.
This array is my goal:

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

);

So if I encode it with json_encode($ar), the result should look like this:

{
    "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"
        }
    ]
}

This is what I have so far but does not lead to expected results:

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条回答 默认 最新

  • duanlie4621 2014-05-16 13:04
    关注

    you forgot/missed to use a key when adding the table results to your final array. So instead of

    array_push($finalArray, $rows);
    

    You should use something like:

    $finalArray[$table] = $rows;
    

    So you set a new key>element combination to your finalResult, having $table as a key as you requested.

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥50 成都蓉城足球俱乐部小程序抢票