Я вернул массив данных JSON
из javascript
в PHP
, я использовал json_decode($data, true)
чтобы преобразовать его в ассоциативный массив, но когда я пытаюсь использовать его с помощью ассоциативного index
, я получаю сообщение об ошибке "Undefined index"
Возвращенные данные выглядят так:
array(14) { [0]=> array(4) { ["id"]=> string(3) "597" ["c_name"]=> string(4) "John" ["next_of_kin"]=> string(10) "5874594793" ["seat_no"]=> string(1) "4" } [1]=> array(4) { ["id"]=> string(3) "599" ["c_name"]=> string(6) "George" ["next_of_kin"]=> string(7) "6544539" ["seat_no"]=> string(1) "2" } [2]=> array(4) { ["id"]=> string(3) "601" ["c_name"]=> string(5) "Emeka" ["next_of_kin"]=> string(10) "5457394839" ["seat_no"]=> string(1) "9" } [3]=> array(4) { ["id"]=> string(3) "603" ["c_name"]=> string(8) "Chijioke" ["next_of_kin"]=> string(9) "653487309" ["seat_no"]=> string(1) "1" }
Как мне получить доступ к массиву в PHP
? Спасибо за любое предложение.
Поскольку вы передаете true
как второй параметр json_decode
, в приведенном выше примере вы можете получить данные, делающие что-то похожее:
$myArray = json_decode($data, true); echo $myArray[0]['id']; // Fetches the first ID echo $myArray[0]['c_name']; // Fetches the first c_name // ... echo $myArray[2]['id']; // Fetches the third ID // etc..
Если вы НЕ передаете true
как второй параметр json_decode
он вместо этого вернет его как объект:
echo $myArray[0]->id;
$data = json_decode($json, true); echo $data[0]["c_name"]; // "John" $data = json_decode($json); echo $data[0]->c_name; // "John"
$data = json_decode(...); $firstId = $data[0]["id"]; $secondSeatNo = $data[1]["seat_no"];
Именно так 🙂
Когда вы хотите перебрать в массив с несколькими измерениями, вы можете использовать foreach следующим образом:
foreach($data as $users){ foreach($users as $user){ echo $user['id'].' '.$user['c_name'].' '.$user['seat_no'].'<br/>'; } }
Поскольку вы передаете true как второй параметр json_decode
, в приведенном выше примере вы можете получить данные, делающие что-то похожее:
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>