Ошибка цикла по каждому элементу - PullRequest
1 голос
/ 28 июня 2011

Первый цикл получает 2 значения для hostkarma просто отлично.2-й цикл завершается сбоем для accredit.habeas, и я получаю «Недопустимый аргумент для foreach () в строке 11».Куда я вхожу с циклом «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 . "<br>";
            }
    }
}

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

Вы должны добавить:

if (is_array($value))

непосредственно перед foreach($value as $val) строкой.

Для случаев, когда gethostbynamel не возвращает свое возвращаемое значение $value не является массивом, поэтому вызываетInvalid argument supplied for foreach() ошибка.

0 голосов
/ 28 июня 2011

Документация гласит, что gethostbynamel возвращает FALSE, если не удается разрешить имя хоста, и что gethostbyaddr возвращает неизмененный IP-адрес при ошибке.

Поэтому проверьте результатывозвращаются этими функциями и делают что-то разумное в случае сбоя одной из них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...