ti-enxame.com

Como acessar o array decodificado por JSON PHP

Devolvi uma matriz de tipo de dados JSON de javascript para PHP, usei json_decode($data, true) para convertê-lo em uma matriz associativa, mas quando tento usá-lo usando a index associativa, recebo o erro "Undefined index" Os dados retornados são semelhantes a este

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" }  

Por favor, como eu acesso esse array em PHP? Obrigado por qualquer sugestão.

17
Chibuzo

Como você está passando true como o segundo parâmetro para json_decode, no exemplo acima você pode recuperar dados fazendo algo semelhante a:

$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..

Se você não passar true como o segundo parâmetro para json_decode, ele retornará como um objeto:

echo $myArray[0]->id;
53
juco
$data = json_decode($json, true);
echo $data[0]["c_name"]; // "John"


$data = json_decode($json);
echo $data[0]->c_name;      // "John"
7
Norguard
$data = json_decode(...);
$firstId = $data[0]["id"];
$secondSeatNo = $data[1]["seat_no"];

Bem assim :)

3
Balázs Édes

Como você está passando verdadeiro como o segundo parâmetro para json_decode, no exemplo acima, você pode recuperar dados fazendo algo semelhante a:

<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
var_dump(json_decode($json, true));

?>
1
pawan kumar

Quando você quiser fazer um loop em um array de múltiplas dimensões, você pode usar foreach assim:

foreach($data as $users){
   foreach($users as $user){
      echo $user['id'].' '.$user['c_name'].' '.$user['seat_no'].'<br/>';
   }
}
0
the_butterfly_effect