2011-11-05 44 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#:(现在警告,没有错误.... :)