【问题标题】:PHP Warning: Invalid Foreach() argument supplied in IEPHP 警告:IE 中提供的 Foreach() 参数无效
【发布时间】:2014-08-01 20:20:59
【问题描述】:

我正在为一个网站构建一个依赖下拉列表。我已经能够构建它并且它工作得很好。但是,当我在 Internet Explorer 中打开网站时,我收到 警告:foreach() 提供的参数无效 错误消息。

由于某种原因,我在 Chrome 和 Firefox 中没有收到错误消息。我确定这不是浏览器问题,一定与我的 PHP 代码有关。

我尝试了以下方法,但仍然出现错误:

  1. 使用 isset 验证变量不为空

    echo "<select name='subcat3' ><option value=''>Select one</option>";
    $abc = $dbo->query(@$quer3);
    if (isset($abc)) :
    foreach ($abc as $noticia) :
    echo  "<option value='$noticia[subcat2]'>$noticia[subcat2]</option>";
    endforeach;
    endif;
    echo "</select>";
    
  2. 验证是否为数组

使用 is_array 验证是否为数组。但是使用它会破坏下拉功能。

    if (is_array($abc)) :

谁能告诉我我做错了什么?任何帮助表示赞赏!!!

【问题讨论】:

  • 这看起来不像普通的 PHP。有没有试过正则语法,看看效果是不是一样?
  • 你能帮我们var_dump($abc);吗?
  • 不应该是$noticia['subcat2']???
  • @Mike'Pomax'Kamermans 这是普通 PHP 的另一种写法

标签: php


【解决方案1】:

第一:

$abc 似乎是一个数组,或者至少似乎是一个键/值结构,所以你的 for each 循环应该是:

foreach ($abc as $key=>$noticia):

第二:

$abc 是多维数组/结构吗?否则你不需要添加[subcat2]。 如果它是一个多维数组,你应该用引号引用它的键,例如$noticia['subcat2']

【讨论】:

  • 它不是多维的。这称为关联数组。
  • @HassanAlthaf 抱歉,我说法语,所以我找不到合适的词来翻译“une paire clé valeur”。
  • @Sebastien 抱歉,这没有帮助。我仍然收到错误消息,它仅在 IE 中显示,在其他浏览器中不显示。不知道为什么...
  • @akumarks 我会等到您提供更多信息而不是更新我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
相关资源
最近更新 更多