2011-03-26 61 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{ 

      } 
     }