【问题标题】:JSON Fatal Error foreachJSON 致命错误 foreach
【发布时间】:2012-02-20 08:08:58
【问题描述】:

我有以下内容:

include('php/get_recipe_byID.php');
 $jsonstring1 = $recipe_byidarr;
 $recip = json_decode($recipe_byidarr, true);

print_r($recip);

foreach ($recip['Data']['Recipes'] as $key => $newrecipe) {
       // echo '<li>
         //         <a href="/recipe_search.php?id=' . $recipe['ID'] . '">';
         echo 'seas';
        echo  $newrecipe['TITLE'];
        echo '<br><br>';         
 } 

当我在浏览器中调用它时,它告诉我

Fatal error: Cannot use string offset as an array in /var/www/recipe_search.php on line 43

这是 foreach 循环的行。

$recip 如下:

{"Data":{"Recipes":{"Recipe_9":{"ID":"9","TITLE":"Schnitzel","TEXT":"Alex\u00b4s Hausmannskost","COUNT_PERSONS":"4","DURATION":"40","USER_ID":"1","DATE":"2011-09-16 00:00:00"}}},"Message":null,"Code":200}

有人知道我的错误在哪里吗?

【问题讨论】:

  • 似乎从 PHP5 开始你需要在使用 json_decode 之前将 $recip 显式声明为数组。在 json_decode 之前添加行 $recip = array();。只是我在谷歌上看到的一个建议:)
  • 我已经试过了,没用

标签: php html foreach json


【解决方案1】:

试试吧:

$taskSeries = $array['Data']['Recipes']['Recipe_'.$_GET['id']];
if(array_key_exists('TITLE', $taskSeries)) {
    $taskSeries = array($taskSeries);
}
foreach($taskSeries as $task) {
    $title = $task['TITLE'];
    // do something with $title and other
}

【讨论】:

  • 所以你的意思是它可以是任何 id 而不是 _9 或者它会像 _1、_2、_3...等等?
  • 为什么不呢?用foreach ($recip['Data']['Recipes']['Recipe_' . $_GET['id']] as $key =&gt; $newrecipe){ echo $newrecipe['TITLE'] ; } 但我还是有同样的错误!
  • 只需删除 $key => 并仅通过 ** foreach ($recip['Data']['Recipes']['Recipe_'. $_GET['id']] as $新食谱)**
  • 好的,感谢您的尝试!我在行$taskSeries = $array['Data']['Recipes']['Recipe_'.$_GET['id']]; 仍然遇到同样的错误
  • 我认为您应该将 recips_9 的格式更改为 recips9 或其他格式。
猜你喜欢
  • 2016-10-27
  • 1970-01-01
  • 2014-03-31
  • 2016-12-03
  • 2023-03-16
  • 1970-01-01
  • 2015-12-11
  • 1970-01-01
  • 2012-05-13
相关资源
最近更新 更多