【问题标题】:Using a concatenation operator with a ternary conditional?使用带有三元条件的连接运算符?
【发布时间】:2014-09-07 05:40:43
【问题描述】:

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

我的条件如下:

$tr_class  = (!$pinned ?: "warning");
$tr_class .= ($read ?: " unread");

echo "<tr class='" . $tr_class . "'>";

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

<tr class='warning unread'>

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

在没有编写完整的 if/else 语句的情况下是否可以解决这个问题?

【问题讨论】:

  • 如果$pinned = true$read = false 显示warning unread
  • 相同...如果$pinned! $read,我的结果显示warning unread
  • 您做错了@mpdc,因为该代码有效。 See this eval.in
  • 无法复制:ideone.com/D8Lna2

标签: php if-statement conditional-operator


【解决方案1】:

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

您的代码有效。我怀疑问题出在$pinned$read 的值出现在您的条件语句之前。

如果您忽略了三元组的“为真”一侧,它将采用通常为真或假的测试值,如果您希望“为真”值与条件语句相同。

【讨论】:

  • 运行一些测试并查看控制台,看起来我需要写一个完整的 ? "" : " unread" 出于某种原因,它不喜欢简写 ?: 表示法。不过以前从未遇到过这个问题。
  • 感谢您的编辑。为什么我现在得到warning1 作为输出是有道理的!
猜你喜欢
  • 2019-07-21
  • 2020-04-03
  • 2021-05-13
  • 2014-09-15
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 2022-01-06
相关资源
最近更新 更多