2013-10-26 4 views
-1

저는 작업을위한 코드를 작성하고 텔넷을 통해 요소와 연결하여 구성 옵션을 가져옵니다. 하나의 함수에 대해 나는 기대하고있는 값을 반환하지 않기 때문에 문제가있다. 모든 함수 리턴에 해당 좋아요 경우PHP 함수 반환이 작동하지 않습니다.

function checkLogin ($element, &$handle, $lastElement, $node=null, &$error=null) { 
    $ip = "127.0.0.1"; 
    $port = "31"; 
    include('query.php'); 

    if($serverip[$element]!==$serverip[$lastElement]){ 
     if($handle) {fclose($handle);} 
     $handle = fsockopen($ip, $port, $error, $errstr, 10); 
    } 
    if (!$handle) { $error="Can't connect to server: ".$ip; return false;} 
    else { 
     if($element!==$lastElement){ 
      if(is_null($node)) {$loginElement=$element;} 
      else {$loginElement=$node;} 

      $out="req ne:name=".$loginElement; 
      $error=query($handle,$out); 
      if($error[0]!=0) {return false;} 
      echo "first\n"; 
     } 
     echo "second\n"; 
    } 
    echo "third\n"; 
    return true; 
} 

, 난 볼 수있다 : 여기에서이 코드는 제 제 제

하지만 오류 [0] == 1 후 여전히 복귀 기능 참일 때는 나는 다음과 같은 것을 볼 수 있습니다 : 두 번째 세 번째

무엇이 문제인지 아십니까?

+0

'$ error'는 문자열 또는 배열로되어 있습니까? 이 함수에서는 두 가지 방법을 모두 사용합니다. – Barmar

+0

배열로 사용합니다. 그러나이 경우 거의 항상 '사실'이므로 실제로는 중요하지 않습니다. – user2922749

+0

배열인데 왜'$ error = "서버에 연결할 수 없습니다 :". $ ip;'? – Barmar

답변

1

$element === $lastElementreturn false 문을 호출하지 마십시오. 이 경우 출력은

second 
third 

입니다.

+0

나는 그것에 동의하지만, 그 문제는 아니다.'if ($ error [0]! = 0) {echo "zero"; }''두 번째 세 번째 '를 표시합니다.'first '는 표시되지 않습니다. – user2922749

+0

함수가 두 번 호출됩니다. 처음에 "0"을 표시하고 false를 반환하면 두 번째로 "second"와 "third"가 true를 반환합니다. '$ element === $ lastElement' 두 번째로. –

관련 문제