2011-09-23 50 views
1

我对json_encode没有经验,我试图返回一个应该叫做aaData的阵列的arrray - 对于DataTables with server-side processingjson_encode不打印阵列名称

输出应该是这样的:

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

但我的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); 
} 

实际上是缺少外支架(对象是怎样的?)和aaData name:

[ 
    [ .... ], 
    [ .... ], 
    [ .... ] 
] 

你会怎么做这是最好的?

回答

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); 
} 
+0

这给了我{ “aaData”:空} –

+0

随着$ ARR [ 'aaData'] =阵列();在它之间工作,谢谢 –

+0

@AlexanderFarber是的。我也更新了我的帖子。 –

1

来解释你的问题的根源:的名字变量,$aaData,与数据本身无关。因此,json_encode不会序列化它。

11

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

print json_encode(array('aaData' => $aaData)); 
+0

正是我在找的,谢谢! – Shaun