Php 连接+;三元

Php 连接+;三元,php,Php,在PHP中,有没有一种方法可以使用三元条件连接两个字符串 <?= 'something' . (true) ? 'else' : 'not'; ?> 当我尝试这样做时,我得到的是else而不是所需的其他东西只需在整个三元运算符周围放上括号,如下所示: <?= 'something' . ((true) ? ' else' : ' not'); ?> 你为什么要这么做 答案是:运算符优先级 有关更多信息,请参阅手册:是的,但您需要将三元值放在括号中。试试这个:

在PHP中,有没有一种方法可以使用三元条件连接两个字符串

<?= 'something' . (true) ? 'else' : 'not'; ?>


当我尝试这样做时,我得到的是
else
而不是所需的
其他东西

只需在整个三元运算符周围放上括号,如下所示:

<?= 'something' . ((true) ? ' else' : ' not'); ?>

你为什么要这么做

答案是:运算符优先级


有关更多信息,请参阅手册:

是的,但您需要将三元值放在括号中。试试这个:

<?php echo 'something '.((true) ? 'else' : 'not'); ?>

您的代码等于

<?= ('something' . (true)) ? 'else' : 'not'; ?>

因为根据三元运算符
的优先级高于三元运算符
?:


因此,您必须使用括号强制优先级,如

所述,谢谢,我没有意识到这一点。这似乎是技术上最精确的回应。可能会考虑添加正确的方法,以防万一其他人被绊倒,看不到其他的回应。@卡特拉只是说,这不是因为三元操作符的左联想!这是因为串联运算符的优先级高于三元运算符@cantera运算符的关联部分仅当运算符具有相同的优先级时才相关,但情况并非如此-1因为您所做的只是指出代码实际上在做什么。这很好,但实际上并不能解决问题。“这不是。”我在回答了另外三个告诉他如何解决的答案后回答。但没有人明确说明为什么代码会打印“其他”。我不希望成为被接受的答案,因为这并不是那么冗长。坎特拉知道三元运算符是如何工作的,这是一个显而易见的问题。HIwever如果这对你真的很重要,我可以添加更多信息:-)。