简单的PHP代码不使用三元运算符

时间:2013-12-01 16:41:52

标签: php ternary-operator

对于三元运算符来说,我是一个初学者,之前从未与他们合作过。

代码(简化)

$output2 = '
<div>
    <div>
        <span>test text1</span>
        <div>
            '.(1 == 1) ? "yes" : "no" .'
            <span>test text 2</span>
        </div> 
    </div>
</div>';
echo $output2;

所以问题是,这段代码只输出“是”(只有正确或错误的if语句)

我尝试了""同样的问题,尝试了不同的条件,尝试输出它,没有变量。但问题仍然存在。

谢谢。

Sebastjan

3 个答案:

答案 0 :(得分:5)

用括号括起你的三元if,即

$output2 = '
<div>
    <div>
        <span>test text1</span>
        <div>
            '.((1 == 1) ? "yes" : "no") .'
            <span>test text 2</span>
        </div> 
    </div>
</div>';
echo $output2;

答案 1 :(得分:3)

在php中,三元运算符表现奇怪,在你的情况下:

(1 == 1) ? "yes" : "no" .'<span>test text 2</span>...' 

yes被视为第一个结果,"no" . <span>test text 2</span>...是第二个结果。要避免此类行为,请始终使用括号

((1 == 1) ? "yes" : "no") .'<span>test text 2</span>...' // works correctly

答案 2 :(得分:2)

Alexander's回答是正确的,但我会更进一步,实际上从字符串中删除三元组。

$ternary = ($something == $somethingElse) ? "yes" : "no";

// Double brackets allows you to echo variables
//  without breaking the string up.
$output = "<div>$ternary</div>";

echo $output;

这样做证明更容易维护和重用。


以下是三元运算符的a few uses。如果你正确使用它们,它们会非常强大。