如何从PHP中的JSON输出指定字段值的返回类型?

时间:2017-01-01 04:01:08

标签: php json

我正在尝试学习php,我编写了一些简单的代码来从我的数据库表中输出JSON对象。

目前,我的数据库表包含以下字段:

 Field Name      Type  
 -----------------------------
 id              int(9)
 name            varchar(255)
 position        varchar(255)
 order           int(9)

我编写了以下代码以输出为JSON:

$sql = "select id, name, position, order from table";

$q = mysqli_query($connection, $sql) or die("Error in Selecting " . mysqli_error($connection));

//create an array
$jsonData = array();
while($row = mysqli_fetch_assoc($q))
{
    $index = 'item'.$row['id'].'';
    $jsonData[$index] = $row;
}

echo json_encode($jsonData);

这会产生以下输出:

{
    "item1": {
        "id": "1",
        "name": "Name",
        "position": "Position",
        "order": "1"
    }
} 

但是,idorder中的值将作为字符串输出。如何在php代码中指定返回id中的值和`作为int的顺序,即没有引号(""),如我的数据库表中所指定的那样?

我确定它一定是愚蠢的简单,但我试图理解基础知识,而不是真正确定如何去做。

1 个答案:

答案 0 :(得分:2)

mysqli_fetch_assoc仅以字符串格式提供,而不是任何其他格式。你必须明确地这样做。

  

返回表示结果集中获取的行的关联字符串数组,其中数组中的每个键表示结果集列之一的名称或NULL如果结果集中没有更多行。

$jsonData = array();
while($row = mysqli_fetch_assoc($q)) {
    $index = 'item'.$row['id'].'';
    $row["id"] = intval($row["id"]);
    $row["order"] = intval($row["order"]);
    $jsonData[$index] = $row;
}

我同意并意识到如果有更多字段需要转换,这是一个繁琐的过程。