【问题标题】:php json_encode has 2 keys for same objectphp json_encode 对同一对象有 2 个键
【发布时间】:2015-01-15 18:27:44
【问题描述】:

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

在我使用的php端

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

然后

echo json_encode($retval);

返回它。

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

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

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

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

【问题讨论】:

    标签: php jquery mysql ajax json


    【解决方案1】:

    不是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

    【讨论】:

    • 完美运行!谢谢。并且 mysqli 或 PDO 不是我在问题中提到的选择。 :) 将在一分钟内接受答案。
    猜你喜欢
    • 1970-01-01
    • 2014-12-29
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2014-10-25
    • 1970-01-01
    相关资源
    最近更新 更多