it-swarm.com.ru

Получение ключей массива из ввода JSON

У меня есть этот массив:

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

и я ищу PHP «для каждого» цикла, который бы извлекал имена ключей в entries, т.е. 

id
name
age

Как я могу это сделать?

13
Nick

Попытайся

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

В ключе $ вы получите имена ключей, а в val вы получите значения

29
Sena

Вы могли бы сделать что-то вроде этого: 

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

Если вы передадите true в качестве значения второго параметра в функции json_decode, вы сможете использовать декодированное значение в качестве массива.

1
Emmanuel Okeke

Альтернативный ответ с использованием массивов, а не объектов - передача true в json_decode вернет массив.

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

foreach ($entries as $entry) {
    $id = $entry['id'];
    $name = $entry['name'];
    $age = $entry['age'];
    printf('%s (ID %d) is %d years old'.PHP_EOL, $name, $id, $age);
}

Протестировано на https://www.tehplayground.com/17zKeQcNUbFwuRjC

0
gingerCodeNinja
    $column_name =[];
    foreach($data as $i){
        foreach($i as $key => $i){
            array_Push($column_name, $key);
        }
        break;
    }
0
Inamur Rahman

Я не был удовлетворен другими ответами, поэтому я добавляю свои собственные. Я считаю, что наиболее общий подход:

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

где я использовал entries[0], потому что вы предполагаете, что все элементы массива entries имеют одинаковые ключи.

Посмотрите официальную документацию для key: http://php.net/manual/en/function.key.php

0
Kar.ma

Вы можете попробовать получить свойства объекта, используя get_object_vars:

 $keys = array();

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

 print_r($keys);
0
karthik
foreach($json->entries[0] AS $key => $name) {
    echo $key;
}
0
Mihai Stancu