2011-11-05 47 views
0

我已經在一個帶有可選參數的單例類中實現了一個函數。可選參數空檢查失敗

private function MyFunction($Name = "") 
{ 

$localCopy = $Name; 

//this check fails, EMPTY is printed! 
if (empty($Name)) 
    echo "EMPTY"; 
else 
    echo "NOT EMPTY"; 

//this is working, NOT EMPTY is printed 
if (empty($localCopy)) 
    echo "EMPTY"; 
else 
    echo "NOT EMPTY"; 

} 

該函數被同一類中的另一個函數調用。

public function OtherFunction($Name = '') 
{ 
    self::MyFunction($Name); 
} 

OtherFunction從外面

OtherFunction("Hello"); 

爲什麼空管檢查僅在本地副本正常工作叫什麼名字? 有人可以解釋我嗎?

+2

現在一定是你的服務器,設置等。我嘗試了代碼,它的工作方式就像它應該爲我做的。當它爲空時輸出「EMPTY EMPTY」時不爲空「NOT EMPTY NOT EMPTY」 – John

回答

0

號這兩個變量

$Name 

$localCopy 

不應該區分。兩者都指向相同的'事物'。

此外,$localCopy經常不是副本,只是第二個名稱爲$name的東西表示。

0

我已經解決了這個問題。該死的!!

我在代碼中使用了$ Name和$ name的混合。兩個不同的變量! 中使用了未賦值的變量....

多麼醜陋的東西的人由C來/ C++/C#:(現在警告,沒有錯誤.... :)