PHP for loop echoing a JSON Array,最后一个逗号的问题 [重复] 。

问题描述 投票:-1回答:4

你好,我正在使用for循环来准备一个JSON字符串。

/准备一个JSON数组[ obj1,obj2,obj3......]echo "[";foreach ($usernames as $value){ /为$username准备一个JSON字符串 /e.g. {"username":$value}。   / 如果数组中有下一个元素,则插入逗号 echo ",";}echo "]";

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

谢谢你

php arrays json foreach comma
4个回答
5
投票

有什么原因你没有使用 json_encode 来完成这个任务? 你可以通过一个快速的调用将一个普通的php数组转换为JSON,使用 json_encode.

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

echo $json_encode($arr);

http:/php.netmanualenfunction.js-encode.php。


3
投票

如果你一定要用for来做,那就把逗号的打印改为开头。只有当它不是第一次迭代时才打印。


1
投票

好吧,你可以把所有的内容都存储在一个变量中,然后在它完成后你可以直接做。

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

在添加最后一个"]"


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)。

© www.soinside.com 2019 - 2024. All rights reserved.