【问题标题】:Foreach through JSONArray in PHP在 PHP 中通过 JSONArray 进行 Foreach
【发布时间】:2023-03-14 07:00:02
【问题描述】:

我收到此错误:

警告:在第 49 行 [page].php 中为 foreach() 提供的参数无效

这是 $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
}

【问题讨论】:

    标签: php json


    【解决方案1】:

    只是猜测:

    您的$json 变量是一个字符串。您需要使用 json_decode 将其转换为对象以遍历该对象:

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

    【讨论】:

    • 啊,谢谢。我知道这很简单。上一行是$json = base64_decode($json); 所以会输出一个字符串。
    【解决方案2】:

    您必须先decode json 才能对其进行迭代。

    JSON-String 本身对 foreach 毫无意义。

    【讨论】:

      【解决方案3】:

      先尝试使用json_decode()。看起来你的变量是 json 编码的,这意味着它实际上只是一个字符串,因此不能被 foreach 枚举。

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

      【讨论】:

        【解决方案4】:

        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{
        
                    }
                }
        

        【讨论】:

          猜你喜欢
          • 2013-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-24
          • 2015-08-25
          • 1970-01-01
          相关资源
          最近更新 更多