Петля через массив PHP, закодированный в JSON

У меня есть массив PHP, который имеет идентификатор таблицы как ключ и поле таблицы в качестве значения.

Пример 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, он больше не является массивом, это объект с ключами и значениями. Вы можете проходить через них в javascript, используя for..in

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

Примечание: for..in не имеет порядка garuntee, если вам нужно обеспечить порядок, вам нужно будет проиндексировать ваш массив вместо key=>value и вместо этого использовать цикл for (или while ).

Вы можете получить ключи своего массива с помощью Object.keys , а затем 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); }; 

В старых браузерах вам понадобится полиполк, чтобы включить метод Object.keys . На странице документации MDN есть один .