私はこの配列を持っています:
$json = json_decode('
{"entries":[
{"id": "29","name":"John", "age":"36"},
{"id": "30","name":"Jack", "age":"23"}
]}
');
entries
の下のキー名を取得するPHP「for each」ループを探しています。つまり:
id
name
age
これどうやってするの?
それを試してみてください
foreach($json->entries as $row) {
foreach($row as $key => $val) {
echo $key . ': ' . $val;
echo '<br>';
}
}
$ keyでキー名を取得し、valでshalの値を取得します
次のようなことができます:
foreach($json->entries as $record){
echo $record->id;
echo $record->name;
echo $record->age;
}
json_decode
関数の2番目のパラメーターの値としてtrue
を渡すと、デコードされた値を配列として使用できます。
オブジェクトではなく配列を使用する別の答え-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);
}
$column_name =[];
foreach($data as $i){
foreach($i as $key => $i){
array_Push($column_name, $key);
}
break;
}
私は他の答えに満足していなかったので、自分の答えを追加します。最も一般的なアプローチは次のとおりです。
$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
get_object_vars
を使用してオブジェクトのプロパティを取得してみてください。
$keys = array();
foreach($json->entries as $entry)
$keys += array_keys(get_object_vars($entry));
print_r($keys);
foreach($json->entries[0] AS $key => $name) {
echo $key;
}