循环通过JSON编码的PHP数组

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

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

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

注意: for..in不是自定义顺序,如果您需要确保顺序,则必须将数组编入索引,而不是key=>value ,而是使用for循环(或while )。

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

 var keys = Object.keys(obj).sort(); // sorting is optional for (var i=0; i 

在旧版浏览器中,您需要使用polyfill来启用Object.keys方法。 MDN在其文档页面上有一个 。