php - PHP json_encode 输出错误

标签 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"}

我该如何实现这个目标?

谢谢!

最佳答案

您的问题似乎源于您正在创建多维数组的事实。您将数组作为现有 $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 循环并返回多行结果集,则只会返回最后行。

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

或者,正如@Nilpo指出的那样,您可以通过使用mysqli_fetch_assoc()为您返回一个关联数组来简化上述过程。

$row = mysqli_fetch_assoc($sql);

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

关于php - PHP json_encode 输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23521505/

相关文章:

php - 在 php 中更改图像 src?

javascript - 全日历 : Changing Event Background Color

javascript - 通过ajax formData发送图像文件到php

json - 使用 Rails 3 应用程序的 ios json 身份验证

php - PHP 中的多维数组

php - 如何使用在 PHP 和 MySQL 上运行的普通 Web 应用程序实现像 Google 这样的搜索查询的特定 url?

php - PHPUnit 测试中的 Mysql SAVEPOINT

jquery - 多维选择字段的 jQuery 选择器中的通配符

ios - (Cocoa 错误 3840。)“(字符 0 周围的值无效。)AFNetworking

php - 如何将数组数据类型发送到服务器?