繁体   English   中英

错误的输出json_encode PHP

[英]Wrong output json_encode PHP

我正在使用此代码来构建数组并将其编码为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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM