我正在尝试从PHP生成JSON文件。到目前为止,我有以下输出:
"students":[
{"name": "John"},
{"name": "Alex"},
{"name": "Siri"},
]
每个学生都有一个逗号,当我明显要删除最后一个逗号时。通常我会用if语句执行while循环。但是,我的数据库结构使这种情况不同。
我的PHP代码如下:
while ($getschools = $schools->fetch_assoc()){
$findschools = $dbcon->query("SELECT *
FROM school_".$getstate['texas']."
WHERE students = '".$studentGPA['best']."'");
while ($beststudents = $findschools->fetch_assoc()){
$jsonfield.= '{"name":"'.$getstudent['firstname'].'"},';
}
}
代码可能有一些缺失部分,但希望上下文清晰。我使用以前的提取请求中的php变量来从多个表中获取数据。
在我的例子中,有多个表对应于德克萨斯州的学校。我得到了来自这多所学校(或桌子)的每个学生的名字。我试图将此信息应用于JSON输出。
$jsonfield
行显示我的代码的循环部分。我试图弄清楚如何在我的例子中实现这样的代码:
$i = 0;
$countstudents = $getschools->num_rows;
if ($i < $countstudents){
$jsonfield.=',';
}
这样我的逗号只应用于我的数据部分,而不是我循环的最后一次迭代。
答案 0 :(得分:5)
请不要手动制作JSON。尝试这样的事情:
$students = [];
// This would happen in your loop.
$students[] = array("name" => "John");
$students[] = array("name" => "Alex");
$students[] = array("name" => "Siri");
// Feel free to drop the JSON_PRETTY_PRINT.
echo json_encode(array("students" => $students), JSON_PRETTY_PRINT) . "\n";
// Output:
// {
// "students": [
// {
// "name": "John"
// },
// {
// "name": "Alex"
// },
// {
// "name": "Siri"
// }
// ]
// }
答案 1 :(得分:2)
您有两种选择:
方法1: rtrim
使用fe=c("year")
方法2: implode
添加到rtrim($jsonfield, ',')
作为数组 - $jsonfield
,然后使用$jsonfield[]=....
。
重要:强>
除此之外,为什么要使用循环生成JSON?您可以使用json_encode
功能。
答案 2 :(得分:1)
{{1}}