我有这个数组:
$json = json_decode('
{"entries":[
{"id": "29","name":"John", "age":"36"},
{"id": "30","name":"Jack", "age":"23"}
]}
');
我正在寻找一个PHP“for each”循环,它将检索下的键名entries
,即:
id
name
age
我怎样才能做到这一点?
尝试一下
foreach($json->entries as $row) {
foreach($row as $key => $val) {
echo $key . ': ' . $val;
echo '<br>';
}
}
在 $key 中,您将获得键名,在 val 中,您将获得值
你可以这样做:
foreach($json->entries as $record){
echo $record->id;
echo $record->name;
echo $record->age;
}
如果您true
作为函数中第二个参数的值传递json_decode
,您将能够将解码后的值用作数组。
我对其他答案不满意,所以我添加了自己的答案。我认为最通用的方法是:
$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
foreach($json->entries[0] AS $key => $name) {
echo $key;
}
您可以尝试使用以下方法获取对象的属性get_object_vars
:
$keys = array();
foreach($json->entries as $entry)
$keys += array_keys(get_object_vars($entry));
print_r($keys);
$column_name =[];
foreach($data as $i){
foreach($i as $key => $i){
array_push($column_name, $key);
}
break;
}
使用数组而不是对象的替代答案 - 将 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);
}