【问题标题】:PHP Warning: Invalid argument supplied for foreach() errorPHP 警告:为 foreach() 错误提供的参数无效
【发布时间】:2016-05-18 21:10:13
【问题描述】:

我无法在建议的问题中找到可以帮助我解决此问题的解决方案。

我有以下代码,它确实有效,但它会引发 PHP 警告:为 foreach() 错误提供的参数无效。

在我的代码中,我将 $author2 中的任何作者添加到 $authdisplay 数组中,这些作者与主要作者 ($auth_role[0]) 具有相同的角色。

我已检查以确保 $author2、$auth2_role、$auth_role 和 $authdisplay 都是数组,并且 $author2 和 $auth2_role 具有相同数量的元素。 ($author 是一个字符串。)

任何解决此问题的提示和帮助将不胜感激。

   $author = $this->getPrimaryAuthor();
   $author2 = $this->getAuthor2Names();
   $auth_role = $this->getPrimaryAuthorsRoles();
   $auth2_role = $this->getAuthor2Roles();
   $authdisplay[] = $author;

  foreach($author2 as $key=>$field) {
       if ($auth2_role[$key] == $auth_role[0]) {
          $authdisplay[] = $field;
       }
   }
   return $authdisplay;
 }

【问题讨论】:

  • 你试过var_dump($author2)吗?
  • 你也可以只合并两个数组$author$author2array_merge($author, $author2),但在此之前应用array_filter()$author2
  • @sevavietl 但$author 不是数组。
  • 您的$author2 很可能是nullstring,但应该是array
  • 我知道您说您检查以确保$author2 是一个数组,但您一定是搞错了。这个错误的唯一原因是$author2 不是一个数组。

标签: php foreach


【解决方案1】:

$author2 是否为空有关系吗?

通常你会这样做:

if (is_array($author2) && !empty($author2)) {
    foreach($author2 as $key=>$field) {
    #.... blah blah

    if (is_array($authdisplay) && !empty($authdisplay)) {
        return $authdisplay;
    }
    return false;
}

【讨论】:

  • 谢谢!这解决了它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
相关资源
最近更新 更多