2017-07-09 76 views
-2

如何打印hello - 如果hello爲true,則函數必須打印hello,但如果函數沒有收到hello或hello爲false,則該函數必須打印再見。我在下面ph​​p中無法理解函數代碼 -

<?php 
function showMessage($hello=false){ 
    echo ($hello)?'hello':'bye'; 
} 
?> 
+1

這個功能有什麼問題? –

+1

這是一個速記if/else,請看這裏:https://stackoverflow.com/questions/1506527/how-do-i-use-shorthand-if-else – chrki

+0

問題是,每當我調用這個函數,如showMessage(「 abc「),那麼它也打印」你好「。此外,我正在尋找如何打印「你好」,如果$ hello是真的,「再見」,如果$ hello是假的,而不使用任何其他條件和三元運算符。 –

回答

0

基本上($hello)?'hello':'bye';爲簡寫:

if ($hello == true) { 
    echo 'hello'; 
} else { 
    echo 'bye'; 
} 

參考:http://php.net/manual/en/control-structures.if.php

+0

我同意這一點,但我正在尋找如何打印「你好」,如果$ hello是真的,「再見」如果$ hello是假的,而不使用任何其他條件和三元運算符。 –

0

您正在使用內部功能三元運算符,其將檢查變量truefalse的類型。默認$hello變量類型將爲false。

因此下面的代碼將檢查變量類型是否爲真然後prine'hello'else否則三元運算符將打印'bye'。

這是一樣象下面

if($hello==true){ 
    echo 'hello'; 
}else{ 
    echo 'bye'; 
} 
1

所以,如果你不想讓任何條件就可以默認值bye增加對,安靜。而簡單地echo它

<?php 

function showMessage($hello="bye"){ 
    echo $hello; 
} 
?> 
0

之所以showMessage('abc')現在的打印效果「你好」是因爲($你好)的值爲true作爲一個非空字符串。

我想你要找的是類型比較運算符===。它將檢查傳遞的參數是否實際是一個布爾值。

function showMessage($hello=false) { 
    echo ($hello === true)?'hello':'bye'; 
}