[英]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.