2011-03-26 68 views
4

我得到這個錯誤:的foreach通過JSONArray在PHP

Warning: Invalid argument supplied for foreach() in [page].php on line 49

這是$ JSON變量的回聲: [{"d":"2011-03-26","q":1,"t":1060},{"d":"2011-03-26","q":2,"t":1060},{"d":"2011-03-26","q":1,"t":1060}]

我試圖像這樣來遍歷:

foreach($json as $obj) { // <--THIS IS LINE 49 
    // Stuff 
} 

回答

6

只是一個猜測:

$json變量是一個字符串。你需要將其轉換爲使用json_decode通過對象迭代的對象:

$json_obj = json_decode($json); 
foreach($json_obj as $obj) 
{ 
    //stuff 
} 
+0

啊,謝謝。我知道這很簡單。前一行是'$ json = base64_decode($ json);'所以它會輸出一個字符串。 – pjama 2011-03-26 18:27:28

1

你必須decode json纔可以迭代它。

JSON字符串本身是沒有意義的foreach。

1

先嚐試使用json_decode()。它看起來像你的變量是json編碼,這意味着它只是一個字符串,因此不能通過foreach枚舉。

foreach(json_decode($json) as $obj) { 
    // stuff 
} 
0

foreach(json_decode($json) as $obj) { // stuff }

它返回我這樣的警告:的foreach()提供了無效的說法,雖然作品。

我的代碼是在這裏:

function search_terms ($json , $term) 
     { 
      if ($json != null){ 
       foreach ($json as $item) {// Recursive function 
        $this->search_terms ($item, $term); 
       } 
      }else{ 

      } 
     }