2011-06-28 18 views
1

最初のループはhostkarmaの2つの値を取得します。 2番目のループはaccredit.habeasで失敗し、 "11行目でforeach()に対して無効な引数が指定されました"というメッセージが表示されます。私は "foreach($ value as $ val)"ループを使ってどこに行きますか?Foreachループ障害

 
$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

var_dump($ value)を使用してplzを送信してください。 – Gerep

+0

PHPマニュアルの 'gethostbynamel'から:** IPv4アドレスの**配列**を返すか、** hostnameを解決できない場合は** FALSE **を返します._ – Karolis

答えて

3

あなたは追加する必要があります。

if (is_array($value)) 

だけforeach($value as $val)行の前に。

gethostbynamelが戻り値$valueに失敗した場合には、Invalid argument supplied for foreach()エラーが発生する配列ではありません。

+0

Perfect!感謝anubhava –

+0

@JT:ようこそ。あなたはこの回答を受け入れるようにplsすることができるときはいつでも、このQ&Aを閉じることができます。 – anubhava

+0

質問はどこで受け付けたものとしますか? –

0

gethostbynamelは、ホスト名を解決できない場合はFALSEを返し、失敗した場合はgethostbyaddrが未変更のIPアドレスを返すことを示しています。

これらの関数によって返される結果を確認し、いずれかが失敗した場合には賢明な処理を行います。