在PHP中为JSON对象分配标识符/名称

Assigning identifier/name to JSON object in PHP

本文关键字:标识符 名称 分配 对象 PHP 中为 JSON      更新时间:2023-09-26

我正在从mysql数据库中获取数据,并用PHP编码一个JSON对象以在JS中使用。在PHP端,我做了这个

while($row=mysql_fetch_array($result))

{
     $jmarkers = array(
        'id'=> $row['id'],
                'lat' => $row['lat'],
                'lng' => $row['lng'],
         etc...            
    );
    array_push($json, $jmarkers);
}
$jsonstring = json_encode($json);
echo $jsonstring;

我可以使用jQuery访问JS中的数据,我制作了一个数组来保存JSON数据:

$.getJSON("getJSON.php",函数(数据)

{
     myMarkers = data;
     console.log(myMarkers);
});

我计划在循环内部访问myMarkers数组中的数据,并使用如下语句:

var tempLat=myMarkers.jmarkers[i].lat;

问题是我的JSON对象不被称为jmarkers或其他任何东西,当我将它们打印到控制台时,它们有一个通用名称"Object":

对象{id="2",lat="40.6512",lng="-73.9691",更多…},

所以我不知道如何在JS数组中指向它们。我查看了PHP JSON编码函数,但看不到在哪里设置或更改对象名称。有什么建议吗?非常感谢。

这是意料之中的事。JSON本质上是赋值操作的右手边:

var x = {'foo':'bar'};
        ^^^^^^^^^^^^^---- JSON

x部分不包括在内,因为它只是对象的名称。如果你想包含jmarkers文本,它必须是你要编码的数据结构的一部分:

$arr = array(
   'jmarkers' => array(...your data here...);
);

但所有这些都是在没有任何有用理由的情况下为数据结构添加另一层。

$jmarkers只是JSON对象的PHP端的标识符。当它被传递时,它将数组值转换为JSON编码的字符串,因此会丢失标识符。

目前,在您的PHP代码中,array_push($json, $jmarkers)正在将一个数组附加到当前的$json数组中。因此,您正在实例化一个二维数组,Javascript代码中的jmarkers标识符将无法检索该数组。只需使用myMarkers[i]检索数据即可。

您。。。不要。整个东西是一个对象。您只需要引用中的元素。

alert(myMarkers.id);