循环通过JSON编码的PHP数组

时间:2013-04-24 21:41:13

标签: php jquery json

我有一个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数组?

2 个答案:

答案 0 :(得分:3)

将php中的关联数组编码为JSON对象后,它不再是数组,而是具有键和值的对象。您可以使用for..in

在javascript中迭代它们
for (var key in obj) {
   console.log(obj[key]);
}

注意: for..in没有获得订单,如果您需要确保订单,则必须将数组编入索引,而不是key=>value,并使用{{ 1}}循环(或for)代替。

答案 1 :(得分: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 has one on their documentation page