Json_Encode php最后一个逗号

时间:2015-01-11 18:35:08

标签: php mysql json

对于学校项目,我必须将数据库数据显示为有效的json文件。

            $result = mysqli_query($mysqli, "SELECT * FROM `csvdata`");

            echo "{ \"films\" : [";
            while ($row = mysqli_fetch_array($result)) {
                $jsonResult = json_encode($row);
                echo $jsonResult;
                echo ",";   
            }
                echo "]}";

我得到的输出是:

{
    "films": [
        {
            "0": "Man on fire",
            "titel": "Man on fire",
            "1": "Actie",
            "genre": "Actie"
        },
        {
            "0": "Dumb and Dumberer",
            "titel": "Dumb and Dumberer",
            "1": "Comedy",
            "genre": "Comedy"
        },
        {
            "0": "DefQon 2014",
            "titel": "DefQon 2014",
            "1": "Muziek",
            "genre": "Muziek"
        },

    ]
}

现在我的问题是,如何删除最后一个逗号,我找不到。并且所有数据都告诉数据2次,我也不知道如何避免这种情况。

3 个答案:

答案 0 :(得分:3)

json_encode处理整个事情 - 构建一个数据数组,然后使用json_encode

$result = mysqli_query($mysqli, "SELECT * FROM `csvdata`");

$response = array();
$response['films'] = array();

while ($row = mysqli_fetch_array($result)) {
  $response['films'][] = $row;
}

echo json_encode($response);

答案 1 :(得分:0)

执行此操作的一个好方法是,在编写每条记录之后不要放置逗号,而是之前每条记录。

然后你需要做的就是添加一个不输出第一行逗号的if语句。

答案 2 :(得分:-2)

$result = mysqli_query($mysqli, "SELECT * FROM `csvdata`");

            echo "{ \"films\" : ";
$jsonResult=array();
            while ($row = mysqli_fetch_array($result)) {
                $jsonResult[] = $row; 
            }
echo json_encode($jsonResult);
                echo "}";

使用小示例http://sandbox.onlinephpfunctions.com/code/c226c901b231f7aea373b462ad2b807ec88490f0