2014-01-08 27 views
0

有沒有辦法在一個文件路徑傳遞到RecursiveArrayIterator像PHP傳文件到recursiveArrayIterator

//new RecursiveArrayIterator(json_decode("array from file ", TRUE)), 

我知道我可以從文件中有閱讀:

  $fileSPLObjects = new RecursiveIteratorIterator(
      new RecursiveDirectoryIterator($path), 
      RecursiveIteratorIterator::CHILD_FIRST); 

這將使我從文件中讀取JSON數組而不是在頁面上定義它。 所以基本上有一種方法來結合這兩個代碼片段?

$jsonIterator = new RecursiveIteratorIterator(
new RecursiveArrayIterator(json_decode($json, TRUE)), 
RecursiveIteratorIterator::SELF_FIRST); 

回答

1

對於將盡可能多的代碼行摺疊成一行代碼,您沒有獲得獎勵積分。爲什麼不使用這樣的東西呢?

$json = file_get_contents($json_file_path); 
$json_array = json_decode($json, true); 
if (is_null($json_array)) { 
    // json decode failed. Error handling here 
} else { 
    $iterator = new RecursiveArrayIterator($json_array); 
} 
+0

這就是我想的第一件事,但我得到了'未捕獲的異常「InvalidArgumentException」有消息「傳遞的變量不是數組或對象,而是使用空陣」 – Edward

+0

@Edward你有有效的JSON?我已經更新了我的答案,實際顯示了一個更正確的方法來實現此目的(通過在嘗試操作陣列之前驗證解碼步驟)。 –

+0

這很奇怪,因爲當我複製/粘貼到Json檢查器的文件內容我得到的JSON是有效的,但是當我print_r讀取文件併發布到檢查器中我得到JSON數據字段不包含JSON數據。不知道爲什麼會這樣。 – Edward