我正在使用此代码构建一个数组并将其编码为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"}
我如何做到这一点?
谢谢!
答案 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);