1

我有一个 PHP 数组,其中表 id 作为键,表字段作为值。

示例 PHP:

while($row = mysql_fetch_array($result))
{
    $id = $row['id'];
    $array[$id] = $row['some_field'];
}

然后我用json_encode($array)得到类似的东西:

{"id1":"value1","abc":"123","xyz":"789"}

如何在 jQuery 中循环遍历它?从我目前发现的情况来看,我似乎需要知道钥匙。所以:

var obj = jQuery.parseJSON(jsonVar);
alert(obj.abc); //prints 123

但是,如果我不知道键,因为它们是动态的,我怎么能得到这些值呢?
我需要重组我的 PHP 数组吗?

4

2 回答 2

3

一旦将 php 中的关联数组编码为 JSON 对象,它就不再是数组,而是具有键和值的对象。您可以使用 javascript 在 javascript 中遍历它们for..in

for (var key in obj) {
   console.log(obj[key]);
}

注意: for..in不保证顺序,如果您需要确保顺序,则必须使数组索引,而不是key=>value,并使用for循环(或while)代替。

于 2013-04-24T21:43:46.930 回答
3

您可以使用 获取数组的键Object.keys,然后遍历它们。与 不同for...in,这使您可以.sort()在处理它们之前选择键:

var keys = Object.keys(obj).sort();  // sorting is optional
for (var i=0; i<keys.length; i++) {
    var key = keys[i],
        val = obj[key];
    console.log(key+":"+val);
};

在较旧的浏览器中,您需要一个 polyfill 来启用该Object.keys方法。MDN 在他们的文档页面上有一个

于 2013-04-24T21:49:18.537 回答