кто-нибудь из вас знает хороший способ поместить это в ассоциативный массив. Я попробовал json_decode
но нашел, что это не поможет.
Это данные, которые мне нужно ввести в ассоциативный массив:
{ "data": [ { "name": "Joe Bloggs", "id": "203403465" }, { "name": "Fred Bloggs", "id": "254706567" }, { "name": "Barny Rubble", "id": "453363843" }, { "name": "Homer Simpson", "id": "263508546" } ] }
РЕДАКТИРОВАТЬ:
После того, как я принял ответ, я вспомнил, почему я думал, что json_decode не работает.
Вместо того, чтобы иметь такой ассоциативный массив:
[0] => Array ( [name] => Joe Bloggs [id] => 203403465 )
Я хотел такого типа:
Array ( [Joe Bloggs] => 45203340465 [Fred Bloggs] => 65034033446 )
К сожалению, в то время я забыл об этом. Но в любом случае я решил проблему.
Спасибо за всю твою помощь!
i asume ваш json приходит через ajax …. (иначе код работает с json_decode), поэтому убедитесь, что js json stringifys ваш объект и
вам понадобится stripslashes перед json_decode 😉 в php
json_decode работает для меня по вашим данным:
print_r(json_decode('{ "data": [ { "name": "Joe Bloggs", "id": "203403465" }, { "name": "Fred Bloggs", "id": "254706567" }, { "name": "Barny Rubble", "id": "453363843" }, { "name": "Homer Simpson", "id": "263508546" } ] } ', true));
Вывод:
Array ( [data] => Array ( [0] => Array ( [name] => Joe Bloggs [id] => 203403465 ) [1] => Array ( [name] => Fred Bloggs [id] => 254706567 ) [2] => Array ( [name] => Barny Rubble [id] => 453363843 ) [3] => Array ( [name] => Homer Simpson [id] => 263508546 ) ) )
Установка второго аргумента в true
возвращает ассоциативный массив.
Вы должны создать новый массив
$json_array = json_decode($_POST['json'], true); $assoc_array = array(); for($i = 0; $i < sizeof($json_array); $i++) { $key = $json_array[$i]['name']; $assoc_array[$key] = $json_array[$i]['value']; }
вы получите свой ассоциативный массив в $ assoc_array, и теперь вы можете напрямую обращаться с помощью индексов.