2013-10-26 84 views
-1

我正在編寫一個工作代碼,通過telnet連接元素以從中獲取一些配置選項。對於一個函數,我有問題,因爲它沒有返回我期待的值。下面是該代碼: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,則函數仍然返回true我可以看到類似這樣的內容: 秒 第三個

你知道什麼是問題嗎?

+0

'$ error'應該是一個字符串還是一個數組?你在這個功能中使用它。 – Barmar

+0

我用它作爲數組。但是在這種情況下,這並不重要,因爲它幾乎總是「真實的」。 – user2922749

+0

如果它是一個數組,爲什麼你有'$ error =「無法連接到服務器:」。$ ip;'? – Barmar

回答

1

如果$element === $lastElementreturn false聲明從未被調用過。您的輸出將是

second 
third 

在這種情況下。

+0

我同意,但它不是那個問題。當我添加if($ error [0]!= 0){echo「zero」; return false; }'then then show'zero second third'.' first' does not appear。 – user2922749

+0

你的函數被調用了兩次,第一次顯示「0」並返回false,第二次顯示「second」和「third」返回true。第二次'$元素=== $ lastElement'。 –