你好,我正在使用for循环来准备一个JSON字符串。
/准备一个JSON数组[ obj1,obj2,obj3......]echo "[";foreach ($usernames as $value){ /为$username准备一个JSON字符串 /e.g. {"username":$value}。 / 如果数组中有下一个元素,则插入逗号 echo ",";}echo "]";
我的问题是,在JSON中,有一个尾部的逗号是不正确的格式。我如何确定for循环已经到达数组的末尾,准备最后一个元素,从而阻止它添加除了最后一个逗号字符以外的所有元素?
谢谢你
有什么原因你没有使用 json_encode
来完成这个任务? 你可以通过一个快速的调用将一个普通的php数组转换为JSON,使用 json_encode
.
$arr = array("a"=>"one", "b"=>"two");
echo $json_encode($arr);
如果你一定要用for来做,那就把逗号的打印改为开头。只有当它不是第一次迭代时才打印。
好吧,你可以把所有的内容都存储在一个变量中,然后在它完成后你可以直接做。
$jsonVar = substr($jsonVar, 0, -1);
在添加最后一个"]"
针对您的问题的解决方案
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)。