PHP while 循环修改最后一次迭代

标签 php

我正在尝试从 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.=',';
} 

这样,我的逗号仅应用于我的数据中不是循环的最终迭代的部分。

最佳答案

请不要尝试手工制作 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"
//         }
//     ]
// }

关于PHP while 循环修改最后一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44939911/

相关文章:

php - 以编程方式检索按给定 ID 分配给 MODX 资源的电视

php - 如何使用 php 处理 htaccess 错误?

php - 尝试解码数据(将 Abs 导出到 MySQL)

javascript - 如何在多文件上传公式中动态添加 "input type=file"按钮 [PHP, MySQL & JS]

php - Doctrine2 Symfony2 innerJoin QueryException 预期 Doctrine\ORM\Query\Lexer::T_WITH,得到 'ON'

php - Mongo获取id以某个数字结尾的用户

php - 如何在 CodeIgniter 中创建 'VIEW(SQL)' 并从中选择数据?

PHP 面向对象 : Unique method per argument type?

php - 使用字符串的数值运算

php - WordPress插件删除并删除它的数据库表