使用连接运算符与三元条件


Using a concatenation operator with a ternary conditional?

是否可以运行两个三元条件,将第二个条件的结果连接到第一个条件?

我的条件如下:

$tr_class  = (!$pinned ?: "warning");
$tr_class .= ($read ?: " unread");
echo "<tr class='" . $tr_class . "'>";

如果某件事是$pinned!$read,我应该得到:

<tr class='warning unread'>

但我只得到' unread' ?似乎第二个三元条件句覆盖了前一个,而不是连接?

如果不写完整的if/else语句,是否有解决这个问题的方法?

是简短的回答。如果你不能在PHP中连接变量的输出/调用返回值,它就不会成为一门语言。

你的代码工作。我怀疑问题是$pinned$read的值在它到达你的条件语句之前。

如果你忽略了将'is true'放在三进制的一边,它将获取通常为真或假的测试值,只有当你希望'is true'的值与条件语句相同时,你才应该忽略这一点。