Pytanie Pobieranie kluczy tablicy z wejścia JSON


Mam tę tablicę:

$json = json_decode('
{"entries":[
{"id": "29","name":"John", "age":"36"},
{"id": "30","name":"Jack", "age":"23"}
]}
');

i szukam pętli PHP "dla każdego", która będzie pobierać nazwy kluczy pod entries, tj .:

id
name
age

Jak mogę to zrobić?


11
2018-06-06 12:58


pochodzenie




Odpowiedzi:


Spróbuj

foreach($json->entries as $row) {
    foreach($row as $key => $val) {
        echo $key . ': ' . $val;
        echo '<br>';
    }
}

W kluczu $ otrzymasz kluczowe nazwy, a w val otrzymasz wartości


25
2018-06-06 13:12



Cześć, mam plik json, np. Plik.json Chcę pokazywać dane w formacie tabeli, próbowałem integrować tutaj jest kod <? Php $ json = file_get_contents ("file.json"); $ j = json_decode ($ json); foreach ($ j as $ row) {foreach ($ row jako $ key => $ val) {echo $ key. ":". $ val; echo "<br>"; }} Oto błąd: Ostrzeżenie: podano niepoprawny argument dla foreach () w /var/www/html/new_git/json.php na linii 6 - rupesh
miła odpowiedź bardzo dziękuję :) - Ronel Gonzales


Możesz zrobić coś takiego:

foreach($json->entries as $record){
    echo $record->id;
    echo $record->name;
    echo $record->age;
}

Mam nadzieję że to pomoże!


2
2018-06-06 13:02



Spowoduje to pobranie rzeczywistych wartości. Szukam kluczowych nazw. Dzięki! - Nick
Aby to zrobić, będziesz potrzebować $json obiekt zamiast tablicy. Aby to zrobić, musisz podać drugi parametr do json_decode() funkcjonować - Emmanuel Okeke
Zapomniałem dodać, że powinieneś wtedy użyć $json obiekt jako tablica i użyj znaku foreach($json['entries'] as $record){ foreach($record as $key=>$value){...}} - Emmanuel Okeke
Nie wiedziałem, że nazwy pól mogą być używane jako właściwości (+1). Uratowałem mój dzień! - Jose Manuel Abarca Rodríguez
@ JoseManuelAbarcaRodríguez serdecznie zapraszamy :) - Emmanuel Okeke


Możesz spróbować uzyskać właściwości obiektu za pomocą get_object_vars:

 $keys = array();

 foreach($json->entries as $entry)
   $keys += array_keys(get_object_vars($entry));

 print_r($keys);

0
2018-06-06 13:14





foreach($json->entries[0] AS $key => $name) {
    echo $key;
}

0
2018-06-06 13:01



Dzięki Mihai. Niestety, otrzymuję to: Błąd krytyczny: Nie można użyć obiektu typu stdClass jako tablicy - Nick


Nie byłem zadowolony z innych odpowiedzi, więc dodałem własne. Uważam, że najbardziej ogólne podejście to:

$array = get_object_vars($json->entries[0]);
foreach($array as $key => $value) {
  echo $key . "<br>";
}

gdzie użyłem entries[0] ponieważ zakładasz, że wszystkie elementy entries array mają te same klucze.

Zapoznaj się z oficjalną dokumentacją dla key: http://php.net/manual/en/function.key.php


0
2017-09-25 08:37