PHP和JSON-结果中额外的逗号
我试图以正确的格式返回json响应,但在返回的代码中我得到了一个额外的“逗号”(在最后一项“铅笔”之后是逗号): 我尝试了不同的方法,但我无法摆脱它。有人知道怎么把它拿走吗 我的代码是:PHP和JSON-结果中额外的逗号,php,json,Php,Json,我试图以正确的格式返回json响应,但在返回的代码中我得到了一个额外的“逗号”(在最后一项“铅笔”之后是逗号): 我尝试了不同的方法,但我无法摆脱它。有人知道怎么把它拿走吗 我的代码是: <?php print '{"results":['; for ($i=0; $i <$numrows; $i++) { $stmt->fetch(); $JSONArray = array( "ItemID" => $ItemID,
<?php
print '{"results":[';
for ($i=0; $i <$numrows; $i++) {
$stmt->fetch();
$JSONArray = array(
"ItemID" => $ItemID,
"ItemName" => $ItemName
);
print ",";
print json_encode($JSONArray);
}
print "]}"
?>
你完全错了。您正在输出多个独立的JSON字符串,这是完全错误的。JSON是一个整体式的“结构”,分块构建是非常危险的
简单:不要那样做
构建一个标准PHP数组,然后在构建完成后进行一次编码:
$arr = array();
for(...) {
$arr[] = ... add stuff ..
}
echo json_encode($arr);
首先,获取绑定变量会给您带来额外的步骤,其次,您不需要构造任何JSON。只需将所有行放入适当的数组结构并编码:
$result = $stmt->get_result();
while($rows['results'][] = $result->fetch_array(MYSQLI_ASSOC)){}
echo json_encode($rows);
如果您的系统支持,只需使用此选项,而不是while
循环:
$rows['results'] = $result->fetch_all(MYSQLI_ASSOC);
$rows['results'] = $result->fetch_all(MYSQLI_ASSOC);