我有一个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数组?
答案 0 :(得分:3)
将php中的关联数组编码为JSON对象后,它不再是数组,而是具有键和值的对象。您可以使用for..in
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