2017-06-07 5 views
1

私はスイッチに属するIPアドレスの配列を持っており、そのIPアドレスの配列でsnmpwalkを使用しています。 1つのスイッチを取り外すと、アレイのスイッチに対応するIPアドレスが実行されません.IPアドレスはまだ実行できない配列に存在します。どのように私はこの問題が発生したが、それでも他のIPアドレスを実行した場合、エラー/エコーエラーマッサージを表示するようにコードを書くでしょうか?コードが動作しない場合にエラーメッセージを表示します

これは私のコードです:

<?php 
$dbconnect = new mysqli('localhost', 'root', '', 'name'); 

$results = array(); 
$secondRow = array(); 

foreach ($switchArray as $key => $value) { 

    $results = snmpwalk($value, "public", ".1.3.6.1.2.1.17.4.3.1.1"); 

    foreach ($results as $secondResults) { 
     $secondResults = str_replace(" ", "", $secondResults); 
     $secondResults = str_replace("Hex-STRING:", "", $secondResults); 
     $secondResults = str_replace("STRING:", "", $secondResults); 
     $secondResults = str_replace("INTEGER:", "", $secondResults); 

     $secondArray[] = $secondResults; 

    } 


} 

echo "looping through results of the ip"; 
echo "<pre>"; 
print_r($secondArray); 
echo "</pre>"; 

?> 

答えて

1

snmpwalk戻り、失敗した場合にfalseので、あなただけのcontinue、配列の反復を最初にその値をチェックし、ログ/エラーエコーができます。

<?php 
$dbconnect = new mysqli('localhost', 'root', '', 'name'); 

$results = array(); 
$secondRow = array(); 

foreach ($switchArray as $key => $value) { 

    $results = snmpwalk($value, "public", ".1.3.6.1.2.1.17.4.3.1.1"); 

    // check for error and continue 
    if (false === $results) { 
     echo "$value unreachable <br>".PHP_EOL; 
     continue; 
    } 

    foreach ($results as $secondResults) { 
     $secondResults = str_replace(" ", "", $secondResults); 
     $secondResults = str_replace("Hex-STRING:", "", $secondResults); 
     $secondResults = str_replace("STRING:", "", $secondResults); 
     $secondResults = str_replace("INTEGER:", "", $secondResults); 

     $secondArray[] = $secondResults; 

    } 


} 

echo "looping through results of the ip"; 
echo "<pre>"; 
print_r($secondArray); 
echo "</pre>"; 
+0

はありがとうございました。これは助けになりました。 PHP_EOLは何をするのですか? –

+0

これは行末の終わりです。 * nixプラットフォームでは '\ n'、Windowsでは' \ r \ n'となります –

関連する問題