2011-11-28 2 views
1

안녕하세요. 사용하기 전에 ping 할 컴퓨터가 4 대 있습니다. 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 

나는 pc1, pc2, pc3pc4의 결과는 함수 외부 별도로 표시 할 수있는 방법을 알고 싶어요.

+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

답변을 주셔서 감사합니다.하지만 변수 변수를 사용하여 원하는 작업에 적합한 솔루션을 발견했습니다. 키 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>"; } 
     }  
}