我可以在PHP中執行此操作嗎?設置並驗證IF中的返回值PHP
if ($Var = $this->test1() == true) {
var_dump($Var);
}
public function test1() {
return true;
}
它是真實的,但我不確定這是否是檢查此類返回值的正確方法。
我可以在PHP中執行此操作嗎?設置並驗證IF中的返回值PHP
if ($Var = $this->test1() == true) {
var_dump($Var);
}
public function test1() {
return true;
}
它是真實的,但我不確定這是否是檢查此類返回值的正確方法。
你可以,但有兩件事情你應該知道的:當你做這樣的事情
:
if ($Var = $this->test1() == true) {
的運營商混淆:
在你的情況下,$ this-> test1()返回true,所以沒關係。但是,如果我們改變你的代碼位:
if ($Var = $this->test1() == 5) {
var_dump($Var);
}
public function test1() {
return 3;
}
有人誰讀,如果你想存儲$這個 - 你的代碼將不明白> test1的()在$ VAR(因此,使VAR 3),或者如果您想要在$ Var(false)中放置比較結果$ this-> test1 == 5。
最後在$ Var中保留的內容在PHP 5.3 Certification處可能是一個非常好的問題,但不是有用的情況。
爲了避免出錯,使用括號:
if (($var = $this->test1()) == true) {
你應該照顧的類型:
我給你的東西可以返回一些強制轉換爲真實的例子:
function test1() { return true; }
function test2() { return 3; }
function test3() { return 3.42; }
function test4() { return "x"; }
function test5() { return array('x'); } // array() == true returns false
function test6() { return new stdClass(); }
echo test1() == true;
echo test2() == true;
echo test3() == true;
echo test4() == true;
echo test5() == true;
echo test6() == true;
// outputs 111111 (1 = true)
爲避免錯誤,您應該使用=== operator。你的最後一段代碼變爲:
if (($var = $this->test1()) === true) {
是可以,但是寫:
if (($var = $this->test1()) === true) {
var_dump($var);
}
是安全的,有一些事情要提醒讀者。
我不會建議你這樣做,但在某些情況下,這是可以接受的;如需要惰性執行的複雜if-else樹。
if (($result = slow_process()) !== false) {
return $result;
} else if (($result = slow_process1()) !== false) {
return $result;
} else if (($result = slow_process2()) !== false) {
return $result;
} else if (($result = slow_process3()) !== false) {
return $result;
}
這是過分簡化,但這些情況確實發生。
== true
部分是不必要的。你有什麼是有效的語法,但有些發現它令人困惑。您始終可以這樣做:
$Var = $this->test1();
if ($Var) { ...
只需與開發團隊一起決定標準。
我想做一行,因爲我構建了一個相當複雜的if-else代碼。 –
你也可以這樣做:
if ($Var = $this->test1()) {
var_dump($Var);
}
public function test1() {
return true;
}
我的函數返回一個字符串或布爾值false,'!== false'是最好的方法嗎? –
我不知道這是否是最好的方法,但我不反對。 – Halcyon