我有一个功能,
abc(string $x, bool $y)
如何在函数调用表达式中使用三元运算符?我尝试了这个但是给了
意外的T_RETURN错误
代码:
abc('Hello', return (1==1)?true:false);
答案 0 :(得分:4)
在像PHP这样的命令式语言中,return
仅用于从函数返回。我们称之为return
语句,因为它们是函数体中陈述的东西。
另一方面,具有值或评估值的事物(如数字2或表达式2 + 5)称为表达式。
您可以将return
视为将表达式(即"hello, world!"
)转换为动作的方式(即return "hello,world!"
)
你可以想到像名词条款(即“摇滚”)这样的表达和像行动一样的陈述(即“把摇滚给你的老板”)。
在这种情况下,PHP与大多数命令式语言一样,希望您只使用表达式作为函数的参数。
考虑一下 - 将一个动作作为参数传递给一个函数,或者一起添加两个动作是什么意思?
在您拥有的代码中,您希望调用abc
,第一个参数设置为'Hello'
,第二个参数设置为表达式(1 == 1)?true:false
的值。在这种情况下,您不需要return语句,因为(1==1)?true:false
已经是表达式,所以您可以这样做:
abc('Hello', (1==1)?true:false);
答案 1 :(得分:2)
你不需要那里的return
。尝试用
abc('Hello', (1==1)?true:false);
答案 2 :(得分:0)
试试这个
abc('Hello', $y = (1==1)?true:false);
function abc($x, $y)
{
echo $x." ".$y;
}
输出:
Hello 1
答案 3 :(得分:0)
由于$y
已经被认为是布尔值,因此您的呼叫中不需要三元运算符。三元运算符使用布尔值在两个其他值之间进行选择;如果那些其他值仅为true
和false
,则该语句是多余的。你可以简单地写一下:
abc('Hello', 1==1);