web-dev-qa-db-ja.com

JSON入力から配列キーを取得する

私はこの配列を持っています:

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

entriesの下のキー名を取得するPHP「for each」ループを探しています。つまり:

id
name
age

これどうやってするの?

14
Nick

それを試してみてください

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

$ keyでキー名を取得し、valでshalの値を取得します

35
Sena

次のようなことができます:

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

json_decode関数の2番目のパラメーターの値としてtrueを渡すと、デコードされた値を配列として使用できます。

1
Emmanuel Okeke

オブジェクトではなく配列を使用する別の答え-json_decodeにtrueを渡すと配列が返されます。

$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