-1

您好,我正在使用 for 循环来准备 JSON 字符串

//准备一个 JSON 数组 [obj1,obj2,obj3....]

回声“[”;

foreach ($usernames as $value){
    //为$username准备一个JSON字符串
    //例如 {"username":$value}

    // 如果数组中有下一个元素,则插入逗号
    回声“,”;
}

回声“]”;

我的问题是,结尾的逗号在 JSON 中是不正确的格式。如何确定 for 循环已到达数组的末尾,准备最后一个元素,从而阻止它添加除最后一个逗号字符之外的所有字符?

谢谢

4

4 回答 4

5

你不习惯json_encode这样做有什么原因吗?您可以使用一个快速调用将普通的 php 数组转换为 JSON json_encode

$arr = array("a"=>"one", "b"=>"two");

echo $json_encode($arr);

http://php.net/manual/en/function.json-encode.php

于 2011-09-19T02:13:35.740 回答
3

如果您必须使用 for,则将逗号的打印更改为开头。只有在不是第一次迭代时才打印它。

于 2011-09-19T02:15:42.467 回答
1

好吧,您可以将所有内容存储在一个变量中,然后在完成后您可以执行以下操作:

$jsonVar = substr($jsonVar, 0, -1);

在添加最后一个“]”之前

于 2011-09-19T02:13:46.953 回答
0

针对您的问题的解决方案

echo "[";
ob_start();
foreach ($usernames as $value){
    //prepare a JSON String for $username
    //e.g. {"username":$value}

    // insert comma if there is next element in the array
    echo ",";
}
$data = ob_get_contents();
ob_end_clean() ;
echo rtrim($data,',');
echo "]"

但正确/标准/更简单的方法是简单地做 json_encode($usernames);

于 2011-09-19T02:24:20.660 回答