从JSON输入中检索数组键

时间:2012-06-06 12:58:16

标签: php arrays json foreach

我有这个数组:

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

我正在寻找一个PHP“for each”循环,用于检索entries下的密钥名称,即:

id
name
age

我该怎么做?

7 个答案:

答案 0 :(得分:31)

试试吧

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

在$ key中你将得到关键名称,在val中你得到值

答案 1 :(得分:1)

你可以这样做:

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

如果您将true作为json_decode函数中第二个参数的值传递,则可以将解码后的值用作数组。

答案 2 :(得分:0)

foreach($json->entries[0] AS $key => $name) {
    echo $key;
}

答案 3 :(得分:0)

您可以尝试使用get_object_vars获取对象的属性:

 $keys = array();

 foreach($json->entries as $entry)
   $keys += array_keys(get_object_vars($entry));

 print_r($keys);

答案 4 :(得分:0)

我对其他答案不满意,所以我加了自己的答案。我认为最通用的方法是:

$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

答案 5 :(得分:0)

    $column_name =[];
    foreach($data as $i){
        foreach($i as $key => $i){
            array_push($column_name, $key);
        }
        break;
    }

答案 6 :(得分:0)

使用数组而不是对象的替代答案-将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

测试