2016-06-12 132 views
3

我不理解這個?quirk?的PHP的所有...因爲我正在查看其他人的代碼,我看到有些人完全忽略了else語句,只是放置一個「返回false」;聲明。PHP if/else返回和回顯之間的區別?

看來這個技巧只適用於return語句,正如你在下面的例子中看到的,它在回顯文本時不起作用。

這很奇怪,以案例二爲例,當然這個函數是繼續讀取的,所以函數會在if語句裏面返回「true」,因爲條件符合了,但是當它離開if/else語句時它應該會返回返回FALSE,因爲沒有ELSE語句。這不會發生,並且該函數仍然返回true。

我無法理解這個,所以希望有人能解釋一下嗎?

// Case 1 
function checkNumber1($number) { 
    if ($number === 10) { 
     return true; 
    } else { 
     return false; 
    } 
} 

$number = 10; 
var_dump(checkNumber1($number)); // Returns true 






// Case 2 
function checkNumber2($number) { 

    if ($number === 10) { 
     return true; 
    } 
    return false; 
} 

$number = 10; 
echo '<br>'; 
var_dump(checkNumber2($number)); // Also returns true?? 






// Case 3 
function checkNumber3($number) { 
    if ($number === 10) { 
     echo 'true' . '<br>'; 
    } else { 
     echo 'false' . '<br>'; 
    } 
} 

$number = 10; 
echo '<br>'; 
checkNumber3($number); // Returns true 






// Case 4 
function checkNumber4($number) { 

    if ($number === 10) { 
     echo 'true' . '<br>'; 
    } 
    echo 'false' . '<br>'; 
} 

$number = 10; 
checkNumber4($number); // Returns true and then false??? 
+1

在情況2中,if語句中的'return true'退出該函數。如果if語句中的'echo'true''不會退出函數,那麼'echo'false''也會執行。 – jszobody

+1

我認爲這裏很重要的一個重要區別是'return'結束了函數!,而'echo'沒有。所以case 1)'10 == 10' - > If語句 - >返回true - >函數結束case 2)'10 == 10' - > if語句 - >返回true - >函數結束(注意:由於return結束函數,它將不會執行進一步)情況3)'10 == 10' - >如果語句 - >回聲真正 - >功能命中結束並停止案例4)'10 == 10' - >如果語句 - >回聲真實 - >函數進一步執行 - > echo false - >函數結束 – Rizier123

+0

麪包屑你們很快,所以返回退出函數,輝煌,現在我明白了!謝謝! –

回答

相關問題