错误的输出json_encode PHP

时间:2014-05-07 15:06:30

标签: php jquery json

我正在使用此代码构建一个数组并将其编码为JSON。

   while($row = mysqli_fetch_array($sql)) {

   $results[] = array(
      'wdatatype' => $row['wdatatype'],
      'wdb' => $row['wdb'],
      'wbyte' => $row['wbyte'],
      'wbit' => $row['wbit'],
      'bitval' => $row['bitval'],     
   );

   }
       $json = json_encode($results);
       echo $json;

输出就是这个

     [{"wdatatype":"DB","wdb":"100","wbyte":"0","wbit":"0","bitval":"1"}] 

但是对于我的jQuery脚本,我需要输出

     {"wdatatype":"DB","wdb":"100","wbyte":"0","wbit":"0","bitval":"1"}

我如何做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:4)

您的问题似乎源于您正在创建一个多维数组。您将数组作为现有$results数组的元素推送。对于您想要的输出,$results应该是一个关联数组,不是一组关联数组。

如果结果集中只有一行,请尝试改为:

// Remove the while loop if you're only returning a single row
// such as with a LIMIT = 1 clause in your SQL statement.
$row = mysqli_fetch_array($sql);

// Push the single row as an array into $result
$results = array(
    'wdatatype' => $row['wdatatype'],
    'wdb' => $row['wdb'],
    'wbyte' => $row['wbyte'],
    'wbit' => $row['wbit'],
    'bitval' => $row['bitval'],     
 );

// Now echo the json_encode
echo json_encode($results);

使用json_encode进行转换时,上述内容将变为单个对象,如下所示:

{"wdatatype":"DB","wdb":"100","wbyte":"0","wbit":"0","bitval":"1"}

而不是对象数组。

注意:正如 @PankajGarg @AmalMurali 指出,如果您 ,则应使用此选项仅 返回单行。如果未能删除while循环并返回多行的结果集,则只会返回 last 行。

对于包含多行的结果集,您当前的结构将完美运行。

或者,当 @Nilpo 指出时,您可以使用mysqli_fetch_assoc()为您返回关联数组来简化上述过程。

$row = mysqli_fetch_assoc($sql);

// Now echo the json_encode
echo json_encode($row);