php json_encode mysql以特定方式生成

时间:2015-12-04 15:11:35

标签: php mysql arrays json

我是一个php文件中的mysql查询的json编码结果。我的php脚本如下:

    // GET: api/portfolio'
    [HttpGet]
    public IHttpActionResult Get()
    {
        List<string> somethings = DataStore.GetSomeThings();

        //Return list and return ok (HTTP 200)            
        return Ok(somethings);
    }

我的输出

while ($row = mysql_fetch_array($result)) {
   $to_encode[] = $row;
}
echo json_encode($to_encode);

在这里,您可以看到每条备用线都是多余的。我不需要1,3,5行...等等。

所需输出

[
  {
    "0": "Variables",
    "topic_name": "Variables",
    "1": "pyt1.1",
    "rdf_id": "pyt1.1",
    "2": "Hello World",
    "ex_name": "Hello World",
    "3": "1",
    "line_number": "1",
    "4": "print (\"Hello World!\")",
    "code": "print (\"Hello World!\")",
    "5": "Some Comment",
    "comment": "Some Comment"
  }
]

如何更改php脚本以实现所需的输出?

2 个答案:

答案 0 :(得分:1)

在您的情况下,您应该将mysql_fetch_array() MYSQL_ASSOC 标志一起使用:

while ( $row = mysql_fetch_array( $result, MYSQL_ASSOC ) )

文档中的重要内容:

  

警告此扩展在PHP 5.5.0中已弃用,已被删除   在PHP 7.0.0中。

与文档中提到的一样,您应该使用mysqliPDO

您可以在此处找到更多信息:https://stackoverflow.com/a/8891552/5297359

答案 1 :(得分:0)

mysql_fetch_array有2个参数。第二个参数是结果类型,默认设置为MYSQL_BOTH,这意味着它将数字和列名称作为键返回。使用它像:

mysql_fetch_array($stmt, MYSQL_ASSOC)

注意mysql_函数已弃用,您应该考虑开始使用mysqli_函数,MySQLi类或PDO