json_encode不会打印数组名称

Ale*_*ber 1 php json datatables

我对json_encode没有经验,并且我试图返回一个数组的arrray,应该被称为aaData - 对于带有服务器端处理的DataTables.

输出应该是:

{
    "sEcho": 3,
    "iTotalRecords": 57,
    "iTotalDisplayRecords": 57,
    "aaData": [
        [
            "Gecko",
            "Firefox 1.0",
            "Win 98+ / OSX.2+",
            "1.7",
            "A"
        ],
        [
            "Gecko",
            "Firefox 1.5",
            "Win 98+ / OSX.2+",
            "1.8",
            "A"
        ],
        ...
    ] 
}
Run Code Online (Sandbox Code Playgroud)

但我的PostgreSQL 8.4驱动的PHP脚本的实际输出

if (isset($_REQUEST['json'])) {
    $aaData = array();
    while ($row = $sth->fetch(PDO::FETCH_NUM)) {
        array_push($aaData, $row);
    }
    print json_encode($aaData);
}
Run Code Online (Sandbox Code Playgroud)

实际上是缺少括号外(对象像?)和aaData名称:

[
    [ .... ],
    [ .... ],
    [ .... ]
]
Run Code Online (Sandbox Code Playgroud)

你会怎么做到最好?

sal*_*the 11

另一个选择是使用问题中的代码但更改一行:

print json_encode(array('aaData' => $aaData));
Run Code Online (Sandbox Code Playgroud)


Bri*_*ham 5

如果你想让它aaData作为名称,那么你需要给你的数组一个关联索引,如下所示:

if (isset($_REQUEST['json'])) { 
    $arr['aaData'] = array(); 
    while ($row = $sth->fetch(PDO::FETCH_NUM)) { 
        array_push($arr['aaData'], $row); 
    } 
    print json_encode($arr); 
}
Run Code Online (Sandbox Code Playgroud)