php json_encode有2个键用于同一个对象

时间:2015-01-15 18:27:45

标签: php jquery mysql ajax json

我使用jQuery ajax从php页面获取json对象。

在php端我使用

while ($row = mysql_fetch_array($result)) {
    array_push($retval, $row);
}

然后

echo json_encode($retval);

将其归还。

我在客户端从jQuery获取JSON ajax调用为一个数组,其中两个键用于每个对象中相同的值。一个关键是索引位置,另一个是名称。 例如:数组中的每个对象如下所示:

0: "1234"
1: "2014-11-01"
hc_month: "2014-11-01"
hc_wi_fi_unique: "1234"

关于我为什么会得到这样的结果的任何指示? (JSON_FORCE_OBJECT用于解决此类问题)

PS:我无法控制在mysql上使用mysqli或PDO。仅供参考。

1 个答案:

答案 0 :(得分:2)

不是json_encode问题,而是mysql_fetch_array

http://php.net/manual/en/function.mysql-fetch-array.php

  

返回数组的类型取决于result_type的定义方式。通过   使用MYSQL_BOTH(默认),您将获得一个具有关联性的数组   和数字索引。使用MYSQL_ASSOC,您只能获得关联   索引(作为mysql_fetch_assoc()工作),使用MYSQL_NUM,你只能得到   数字索引(如mysql_fetch_row()有效)。

所以MYSQL_ASSOC或使用mysql_fetch_assoc,虽然我添加了必须的:脱离MySQL扩展并使用MySQLI或PDO