第一个循环获得hostkarma的2个值就好了。第二个循环失败了accredit.habeas,我得到“为第11行的foreach()提供的无效参数”。我在哪里用“foreach($ value as $ val)”循环?
$hosts = array('209.49.180.233','209.49.180.234'); foreach ($hosts as $host) // Loop for IP addresses { $rbls = array('hostkarma.junkemailfilter.com','accredit.habeas.com'); foreach ($rbls as $rbl) // Loop for domains { $hostname = gethostbyaddr( $host ); $lookup = $hostname . '.' . $rbl; $value = gethostbynamel($lookup); foreach($value as $val) // loop for multiple record/code values { echo $host, $rbl, $val . "
"; } } }
答案 0 :(得分:3)
您必须添加:
if (is_array($value))
在foreach($value as $val)
行之前。
对于gethostbynamel
失败的情况,其返回值$value
不是数组,因此导致Invalid argument supplied for foreach()
错误。
答案 1 :(得分:0)
文档说如果无法解析主机名,则gethostbynamel返回FALSE,并且gethostbyaddr在失败时返回未修改的IP地址。
因此,请检查这些函数返回的结果,并在其中一个函数失败时执行一些合理的操作。