你是否必须在三元运算符PHP中包含一个错误的值?

问题描述:

如果某个变量为真,我需要将附加数据添加到字符串,如果没有,我不需要追加任何内容。目前,我正在做:你是否必须在三元运算符PHP中包含一个错误的值?

$string = (condition()) ? 'something'.$string.'something' : $string; 

有没有办法跳过添加虚假选项中三元操作?如果条件为假,那么说$ string = $ string似乎很浪费。

你不能跳过它。您可以重新编写为一行if条件:

if (condition()) $string = 'something'.$string.'something'; 
+0

这是我的下一个选择,但希望它可以完成。感谢您的确认。 – Ayub 2012-03-01 01:15:13

不,无法跳过它。如果你想跳过虚假位,回到if方法:

if (condition()) $string = 'something' . $string . 'something'; 

三元方法只是一个短暂的手if声明反正。如果您可以使if语句短而又不牺牲可读性(如上例所示),那么您应该考虑它。

不过,说实话,我甚至格式化,使其更可读性

if (condition()) 
    $string = 'something' . $string . 'something'; 

除非你急缺显示器的高度,那将是更容易理解一览:-)

是的,您必须。把三元运算符看作一个函数。你会想到会的行为,如果你做了这样的事情,但不想进行分配,如果评估为falsecondition()

$string = ternary(condition(), $yesValue, $noValue); 

没有办法,你可以放弃分配到变量$string如果condition()的计算结果为false。

不。这是三元组的关键。如果你不想要一个错误的值,为什么不只是让condition()返回你需要的值呢?

喜欢的东西:

$string = condition($string); 

function condition($string){ 
    if($string == 'whatever') 
    { 
     $string = 'something'.$string.'something'; 
    } 

    return $string; 
} 

我可以看到其他人已经打败我,所以这里是三元文档:

http://php.net/manual/en/language.operators.comparison.php

+0

,因为他可能只想显示它是否为真,如果是虚假的则不显示。 – 2015-11-11 22:10:38

+0

@hanoncs - 你刚才建议什么?如果他不想定义错误的处理,那么不要使用三元朴素简单。他的问题没有“可能”。很显然,他只想追求真实,但认为自我重新宣布是虚假的浪费。所以,如果这是一个问题,他正在运行一个函数来检查,为什么不直接说$ string = condition()并让该函数给出字符串的最终结果? – 2015-11-12 16:01:42