【问题标题】:Foreach loop failureForeach 循环失败
【发布时间】:2011-06-29 03:52:04
【问题描述】:

第一个循环很好地获取了 hostkarma 的 2 个值。 accredit.habeas 的第二个循环失败,我得到“第 11 行为 foreach() 提供的参数无效”。 “foreach($value as $val)”循环我要去哪里?

$hosts = array('209.49.180.233','209.49.180.234'); foreach ($hosts as $host) // 循环获取 IP 地址 { $rbls = array('hostkarma.junkemailfilter.com','accredit.habeas.com'); foreach ($rbls as $rbl) // 循环域 { $hostname = gethostbyaddr($host); $lookup = $主机名。 '。' . $rbl; $value = gethostbynamel($lookup); foreach($value as $val) // 循环多个记录/代码值 { 回声 $host, $rbl, $val 。 "
"; } } }

【问题讨论】:

  • 请使用 var_dump($value) 并发送给我们。
  • 来自gethostbynamel 的 PHP 手册:返回 IPv4 地址的 array,如果无法解析主机名,则返回 FALSE。我>

标签: php loops


【解决方案1】:

您必须添加:

if (is_array($value))

就在foreach($value as $val) 行之前。

对于gethostbynamel 失败的情况,其返回值$value 不是数组,因此会导致Invalid argument supplied for foreach() 错误。

【讨论】:

  • @JT:在这个答案的左上角数字“3”下面有一个勾号,你只需要点击它。
【解决方案2】:

文档说,gethostbynamel 如果无法解析主机名,则返回 FALSE,gethostbyaddr 在失败时返回未修改的 IP 地址。

因此,请检查这些函数返回的结果,如果其中一个失败,请采取一些明智的措施。

【讨论】:

    猜你喜欢
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2017-09-01
    • 1970-01-01
    • 2015-12-16
    • 2021-05-31
    相关资源
    最近更新 更多