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