我有一个字符串,我想附加一些其他字符串。让我们说:
$my_string = 'Hello';
$my_string .= ' there';
这将返回'你好'。
我想这样做有条件:
$my_string = 'Hello';
$append = 'do';
if ( $append == 'do' ) {
$my_string .= ' there';
}
现在,我想使用三元运算来做到这一点,但我遇到的所有例子都是if / else,它们会是这样的:
$my_string .= ( $append == 'do' ) ? ' there' : '';
所以可以只用IF而不用其他吗?
感谢。
答案 0 :(得分:24)
不。但是,相反的情况是可能的。以下是PHP文档的引用:
从PHP 5.3开始,可以省略三元运算符的中间部分。表达式expr1?:expr3如果expr1的计算结果为TRUE则返回expr1,否则返回expr3。
答案 1 :(得分:18)
不......三元意味着你需要条件,真实部分和错误部分的三个部分
答案 2 :(得分:16)
结合mellamokb和Andz你可以做到这一点:
( $append != 'do' ) ?: $my_string .= ' there';
答案 3 :(得分:5)
检查条件然后追加到字符串的另一种方法是:
($append == 'do') and ($my_string .= ' there');
但那真的只是一个if
位移。但接近于“没有别人的三元”。
答案 4 :(得分:4)
你可以这样做:
( $append == 'do' ) ? $my_string .= ' there' : $noop ;
如果你反转语句使得三元组位于外部而不是赋值内部,那么你可以将整个语句放在TRUE部分中,然后在ELSE中执行一些非操作命令一部分。
答案 5 :(得分:3)
如果您考虑缩短代码,可以在同一行中编写相同的内容。
if ($append == 'do') {$my_string .= ' there';}
修改强>
我刚刚发现了这个并且想法就派上用场了。您也可以像这样编写if块
if ($append == 'do') $my_string .= ' there';
答案 6 :(得分:1)
您可以创建一个能够满足您需求的功能。而不是每次都写出if
语句。
function doAppend($doIt, &$value, $appendValue)
{
if($doIt) $value .= $appendValue;
}
用以下方式调用:
doAppend($append == 'do', $my_string, ' there');
注意第二个参数是如何引用的,所以它也会在调用代码中被更改。
答案 7 :(得分:0)
你不能在没有else / false部分的情况下使用三元组,但如果你的目的是让一切都在一行上,我可以建议尝试这个替代方案:
($append == 'do' && $my_string .= ' there');
如果第一个为真,它将继续第二个语句。否则将在第一次评估后停止,导致错误。
请参阅延迟评估(所谓的Short-circuit evaluation)
或者你可以做相反的事情,让 true 如果部分为空,并且声明只是假,正如Andz正确指出的那样。
答案 8 :(得分:0)
一种简单而有效的方法是,如果没有任何返回值,则使用TRUE
FALSE
值。不仅您有一个参数,而且还可以返回想要的确切值,例如
$my_string .= ( $append == 'do' ) ? ' there' : true;