0

JSON でエンコードされた配列がありますが、配列値の 1 つで配列名に「$」が含まれています。以下の次のコードで値を読み取ると、値が取得されませんでした。

<?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/>';
    }
}
?>

からのJSON配列の下$item

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か?

4

2 に答える 2

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/>';
}
于 2013-10-10T09:39:51.167 に答える
1

を使用し$item['ID']['$id']ます。を使用している場合$item[ID]は、 undefined constant を使用します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 />';
}
于 2013-10-10T09:39:43.767 に答える