无法读取数组名称中带有“$”的JSON数组值,

时间:2013-10-10 09:36:38

标签: php arrays json

我有一个JSON编码的数组,但其中一个数组值是数组名称中的“$”。 当我用下面的代码读取值时,没有给我一个值。

<?php
error_reporting("E_ERROR");
date_default_timezone_set("Europe/Amsterdam"); 
$json = file_get_contents('http://jotihunt.net/api/1.0/nieuws');
$json = json_decode($json, true);

foreach ($json as $key1 => $item) {
    foreach ($item as $key2 => $value) {

        $id = $item['$id'];

         echo gmdate("d-m-Y H:i", strtotime('+2 hours', $value['datum'])) . '&nbsp;' . $value['titel'] . ' met ID: '.$id.'<br/>';
    }
}
?>

来自$item

的JSON数组
Array
(
    [0] => Array
        (
            [ID] => Array
                (
                    [$id] => 52532555a08789e17900000d /* Can't read this with $item[$id] because the "$" before "id" */
                )

            [titel] => API 1.0    /* $value['titel'] */
            [datum] => 1381180320 /* $value['datum'] */
        )

    [1] => Array
        (
            [ID] => Array
                (
                    [$id] => 524b16eaa08789806a000010
                )

            [titel] => Inschrijving gesloten
            [datum] => 1380652260
        )

有谁知道我如何阅读$id

2 个答案:

答案 0 :(得分:3)

$ id项目包含在ID项目中。尝试:

$id = $item['ID']['$id'];

编辑:我不确定为什么你有嵌套循环。 这应该足够了:

foreach ($json as $key1 => $item) {
 $id = $item['ID']['$id'];
 echo gmdate("d-m-Y H:i", strtotime('+2 hours', $item['datum'])) . '&nbsp;' . $item['titel'] . ' met ID: '.$id.'<br/>';
}

答案 1 :(得分:1)

使用$item['ID']['$id']。如果您发现自己使用$item[ID],则使用未定义的常量ID

以下是有效的代码:

$json = file_get_contents('http://jotihunt.net/api/1.0/nieuws');
$json = json_decode($json, true);

foreach ($json['data'] as $key1 => $item) {
  $id = $item['ID']['$id'];
  echo gmdate("d-m-Y H:i", strtotime('+2 hours', $item['datum'])) . '&nbsp;' . $item['titel'] . ' met ID: '.$id.  '<br />';
}