2017-07-09 42 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'; 
}