【问题标题】:PHP 7.2.7 Warning: Invalid argument supplied for foreach()PHP 7.2.7 警告:为 foreach() 提供的参数无效
【发布时间】:2018-10-29 20:07:23
【问题描述】:

使用 PHP 7.2.7 收到警告消息,但使用 PHP 7.2.11 可以正常工作。

Warning: Invalid argument supplied for foreach() 
foreach ($result->data as $posty) {  

有什么想法吗?它在 PHP 5.2 上也能正常工作。

【问题讨论】:

  • $result 不是一个对象,可能是布尔值,$result->data 不是一个数组,尝试转储变量并在此处发布值。
  • 没有理由将个别代码故障归咎于特定解释器版本(甚至补丁级别),除非充分的研究和调试表明如此。
  • 比转储更好,启动调试器并单步执行您的代码。
  • @JorgeAugustoMorêradeMoura: var_dump($posty); object(stdClass)#3681 (2) { ["next_max_id"]=> string(30) "xxxxx_xxxx" ["next_url"]=> string(170) "api.instagram.com/v1/users/xxxx/media/…" }

标签: php php-7.2


【解决方案1】:

这个东西在 php7 中有所改变。请检查您是否将有效的数组或对象传递给 foreach 循环。

您遇到的错误意味着 php 解释器无法循环浏览您的 $result->data 项。

我通常在将结构传递给 foreach 之前检查结构,如下所示:

if ($result->data && (gettype($result->data)=='array' || gettype($result->data )=='object')) {
 foreach ($result->data as $posty) {
  ...
 }
}

【讨论】:

  • 我的快乐宝贝。 :)
  • 这不是一个好建议。 OP 的问题不是 foreach,而是生成数据的任何代码。你根本不应该编写这种类型检查。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
相关资源
最近更新 更多