PHP和JSON-结果中额外的逗号

PHP和JSON-结果中额外的逗号,php,json,Php,Json,我试图以正确的格式返回json响应,但在返回的代码中我得到了一个额外的“逗号”(在最后一项“铅笔”之后是逗号): 我尝试了不同的方法,但我无法摆脱它。有人知道怎么把它拿走吗 我的代码是: <?php print '{"results":['; for ($i=0; $i <$numrows; $i++) { $stmt->fetch(); $JSONArray = array( "ItemID" => $ItemID,

我试图以正确的格式返回json响应,但在返回的代码中我得到了一个额外的“逗号”(在最后一项“铅笔”之后是逗号):

我尝试了不同的方法,但我无法摆脱它。有人知道怎么把它拿走吗

我的代码是:

 <?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);