2011-11-28 71 views
1

你好我有四臺電腦,我想在使用之前ping。 ping通過具有以下功能的PHP頁面完成。PHP函數顯示

if (isset($_POST['playgroundcheck'])) { 

    function ping($PGIP) { 
     require_once "Net/Ping.php"; 
     $ping = Net_Ping::factory(); 
     if (PEAR::isError($ping)) 
      echo $ping -> getMessage(); 
     else { 
      /* Number of packets to send */ 
      $ping -> setArgs(array('count' => 2)); 
      $pgData = $ping -> ping($PGIP); 
      // print_r($pgData); 

      if ($pgData -> _received > 0) { 
       return true; 
       //echo "<h1><font color=\"green\">ON</font></h1>"; 
      } else { 
       //echo "<h1><font color=\"red\">OFF</font></h1>"; 
       return false; 
      } 

     } 

    } 

    $IP2sping = array("pc1" => "192.168.1.121", "pc2" => "192.168.1.122", "pc3" => "192.168.1.123", "pc4" => "192.168.1.124"); 

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

     if (ping($value) == true) { 
      echo $key . " alive<br>"; 
     } else { 
      echo $key . " off<br>"; 
     } 
    } 
} 

我創建了一個窗體用提交按鈕調用函數。所有這些工作,但我的問題是試圖顯示功能外的輸出。例如,當前所有輸出顯示如下。

pc1 alive 
pc2 alive 
pc3 alive 
pc4 alive 

我想知道怎樣的pc1pc2pc3pc4結果可以單獨功能外顯示。

+1

* *顯示在函數外部。打印數據的代碼位於函數之外。在我們可以幫助之前,您將不得不更好地解釋一下何時何地需要顯示輸出。 – DaveRandom

回答

0

實際上,它顯示在函數之外。這裏是你展示結果的地方。

if (ping($value) == true) { 
     echo $key." alive<br>"; 
    } else { 
     echo $key." off<br>"; 
    } 

我會做這樣的事情你想要的東西:

$available = null; 
    foreach ($IP2sping as $key => $value){ 

    if (ping($value) == true) { 
     echo $key." alive<br>"; 
    } else { 
     echo $key." off<br>"; 
    } 
} 

或者

$available = null; 
foreach ($IP2sping as $key => $value) 
    $available[$key] = ping($value) ? true : false; 

然後,您就可以使用$available陣列爲任何你想要的: )

0

這有幫助嗎?

if (isset($_POST['playgroundcheck'])) { 

    // Define the function 
    function ping($PGIP) { 
    require_once "Net/Ping.php"; 
    $ping = Net_Ping::factory(); 
    if (PEAR::isError($ping)) { 
     return FALSE; 
    } else { 
     /* Number of packets to send */ 
     $ping->setArgs(array('count' => 2)); 
     $pgData = $ping->ping($PGIP); 
     // print_r($pgData); 
     return ($pgData->_received > 0); 
    } 
    } 

    // Define array of items to ping 
    $IP2sping = array("pc1" => array('ip' => "192.168.1.121"), 
        "pc2" => array('ip' => "192.168.1.122"), 
        "pc3" => array('ip' => "192.168.1.123"), 
        "pc4" => array('ip' => "192.168.1.124") 
      ); 

    // Get the results of whether the machines are alive 
    foreach ($IP2sping as $key => $value){ 
    $IP2sping[$key]['alive'] = ping($value); 
    } 


    /* 
    Do a load more stuff 
    */ 

    foreach ($IP2sping as $name => $data) { 
    echo "$name ({$data['ip']}) is ".(($data['alive']) ? 'alive' : 'dead')."<br />\n"; 
    } 

} 
2

感謝您的回答,但我發現了一個解決方案,它對我想要使用變量變量的工作非常有用。

通過將$ key更改爲$$ key pc1 pc2 pc3和pc4變成變量,然後我可以在任何需要的地方使用它。

$IP2sping = array("pc1" => "192.168.1.121",     
        "pc2" => "192.168.1.122",     
        "pc3" => "192.168.1.123",     
        "pc4" => "192.168.1.124");  


foreach ($IP2sping as $key => $value){  
    if (ping($value) == true) {   
     $key." alive<br>";  
     } else {   
     $key." off<br>"; } 
     }  
}