2014-01-05 25 views
2

我一直在試着研究如何遍歷並輸出json文件的內容,其中字段名稱以「$」開頭,並繼續獲取Undefined可變錯誤信息

這裏是JSON文件的例子(從https://mixpanel.com/help/reference/webhooks採取)的例子:

[ 
    { 
     "$distinct_id":"13b20239a29335", 
     "$properties":{ 
     "$region":"California", 
     "$email":"[email protected]", 
     "$last_name":"Bovik", 
     "$created":"2012-11-20T15:26:16", 
     "$country_code":"US", 
     "$first_name":"Harry", 
     "Referring Domain":"news.ycombinator.com", 
     "$city":"Los Angeles", 
     "Last Seen":"2012-11-20T15:26:17", 
     "Referring URL":"http://news.ycombinator.com/", 
     "$last_seen":"2012-11-20T15:26:19", 
     } 
    }, 
    { 
     "$distinct_id":"13a00df8730412", 
     "$properties":{ 
     "$region":"California", 
     "$email":"[email protected]", 
     "$last_name":"Lytics", 
     "$created":"2012-11-20T15:25:38", 
     "$country_code":"US", 
     "$first_name":"Anna", 
     "Referring Domain":"www.quora.com", 
     "$city":"Mountain View", 
     "Last Seen":"2012-11-20T15:25:39", 
     "Referring URL":"http://www.quora.com/What-...", 
     "$last_seen":"2012-11-20T15:25:42", 
     } 
    } 
] 

我用一個靜態的字符串測試只是爲了嘗試和得到的東西的工作。這裏是我的測試代碼...

<?php 

    $input = '[{"$distinct_id":"13b20239a29335","$properties":"dddd"}]'; 
    $jsonObj = json_decode($input, true); 

    foreach ($jsonObj as $item) { 
     foreach ($item as $rec) { 
      echo '<br>'; 
      $my_id = $rec->$distinct_id; 
      echo($my_id); 
      $my_id = $rec->$properties; 
      echo($my_id); 
     } 
     echo '<br>'; 
    } 
?> 

任何幫助,將不勝感激。

Noob!

UPDATE:穆薩給這個例子適用於單級JSON: 的foreach($ jsonObj爲$項目){

echo '<br>'; 
    $my_id = $item->{'$distinct_id'}; 
    echo($my_id); 
    $my_id = $item->{'$properties'}; 
    echo($my_id); 

echo '<br>'; 

}

這怎麼能那麼適於讀取和輸出更大的多級json文件的所有元素?

回答

6

使用大括號

​​

編輯

foreach ($jsonObj as $item) { 

     echo '<br>'; 
     $my_id = $item->{'$distinct_id'}; 
     echo($my_id); 
     foreach ($item->{'$properties'} as $my_prop => $value){ 
      echo("$my_prop => $value"); 
     } 

    echo '<br>'; 
} 

http://codepad.org/1cudZqlu

隨着嵌套循環你迭代的特性$distinct_id$properties所以$rec實際上是一個字符串,而不是一個目的。

此外,您的json無效,因爲它在$properties字段中跟蹤,

+0

謝謝你的穆薩。非常感激。 我怎樣才能從主json文件中循環更深的元素? – user2525060

+0

@ user2525060已更新 – Musa