Foreach循环失败

时间:2011-06-28 19:39:42

标签: php loops

第一个循环获得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 . "
"; } } }

2 个答案:

答案 0 :(得分:3)

您必须添加:

if (is_array($value))

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

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

答案 1 :(得分:0)

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

因此,请检查这些函数返回的结果,并在其中一个函数失败时执行一些合理的操作。