2012-06-18 94 views
0

我想編輯我的同事的代碼(他是在休假和遙不可及的),而且這個if語句:PHP - 這個if語句可以返回true嗎?

if($this->carrier() == 1 and $this->carrier() == 2) { 
    return 'V'; 
} 

我的希望是,他不小心把「和」替代「或「這可以解釋我遇到的一個錯誤,但他比我更瞭解PHP,我想確定這是錯誤的,而不是僅僅違反直覺。

+6

是的,如果'$ this-> carrier()'返回每次調用的不同值。但如果沒有,那麼不。所以這個聲明是否是一個錯誤取決於'$ this-> carrier()'在做什麼。 –

+0

Yesit可以像大家一樣說,但是,它不應該以這種方式實施。我建議切換到或看看它是否解決了你的問題。 – FatalError

回答

11

是的,因爲它是一種具有潛在副作用的功能,它可能是真的。

例如:

function carrier() { 
    return $someValue++; 
} 
5

是的。每次調用它時,carrier()方法都會增加它返回的任何值。

2

有它可能機會很小,是的。

他正在調用一個函數兩次,並且沒有包含該函數的文本。所以這可能會做一些我們看不到的事情,比如計算這個過程調用的次數。

另一方面,它更可能是一個錯字。

1

這是可能的。這是您可以運行的一個工作示例。

class program 
{ 
private $i = 1; 
function carrier() 
{ 
$this->i=$this->i+1; 
return $this->i-1; 
} 

function run() 
{ 
if ($this->carrier()==1 && $this->carrier()==2) 
{ 
    echo "works"; 
} 
else 
{ 
    echo "doesnt work" . $i; 
} 
} 
} 

$prog = new Program(); 
$prog->run();