从 JSON 输入中检索数组键
Posted
技术标签:
【中文标题】从 JSON 输入中检索数组键【英文标题】:Retrieving array keys from JSON input 【发布时间】:2012-06-10 11:55:12 【问题描述】:我有这个数组:
$json = json_decode('
"entries":[
"id": "29","name":"John", "age":"36",
"id": "30","name":"Jack", "age":"23"
]
');
我正在寻找一个 php“for each”循环,它可以检索entries
下的键名,即:
id
name
age
我该怎么做?
【问题讨论】:
【参考方案1】:foreach($json->entries[0] AS $key => $name)
echo $key;
【讨论】:
谢谢米海。不幸的是,我得到了这个:致命错误:不能使用 stdClass 类型的对象作为数组【参考方案2】:你可以这样做:
foreach($json->entries as $record)
echo $record->id;
echo $record->name;
echo $record->age;
如果您将true
作为json_decode
函数中第二个参数的值传递,您将能够将解码后的值用作数组。
【讨论】:
这将获取实际值。我正在寻找关键名称。谢谢! 为此,您需要将$json
对象改为数组。为此,您需要将第二个参数提供给json_decode()
函数
我忘了补充,然后你应该使用$json
对象作为数组并使用foreach($json['entries'] as $record) foreach($record as $key=>$value)...
我不知道字段名称可以用作属性 (+1)。拯救了我的一天!【参考方案3】:
试试看
foreach($json->entries as $row)
foreach($row as $key => $val)
echo $key . ': ' . $val;
echo '<br>';
在 $key 中您将获得键名,在 val 中您将获得值
【讨论】:
嗨,我有 json 文件,即 file.json 我想以表格格式显示数据尝试在这里集成是代码 $val) echo $key . ':'。 $val;回声'';这是错误:警告:在第 6 行的 /var/www/html/new_git/json.php 中为 foreach() 提供的参数无效【参考方案4】:您可以尝试使用get_object_vars
获取对象的属性:
$keys = array();
foreach($json->entries as $entry)
$keys += array_keys(get_object_vars($entry));
print_r($keys);
【讨论】:
【参考方案5】:我对其他答案不满意,所以我添加了自己的答案。我认为最通用的方法是:
$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
【讨论】:
【参考方案6】: $column_name =[];
foreach($data as $i)
foreach($i as $key => $i)
array_push($column_name, $key);
break;
【讨论】:
考虑添加一些解释。强烈建议不要只回答代码!【参考方案7】:使用数组而不是对象的替代答案 - 将 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测试
【讨论】:
以上是关于从 JSON 输入中检索数组键的主要内容,如果未能解决你的问题,请参考以下文章