从 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 输入中检索数组键的主要内容,如果未能解决你的问题,请参考以下文章

PHP,Laravel:从 JSON 中消除特定的复杂数组

是否可以从 python 中的变量中检索 JSON 路径?

在Javascript / React中将对象转换为数组

根据最后一个自动增量主键检索记录并在输入字段中查看

如何从动态创建的表格视图单元格的输入字段中将数据检索到数组

jQuery:使用预定义的数组键从输入数组中获取值