回声中的PHP三元语句?语法问题

时间:2012-10-03 14:59:24

标签: php if-statement echo

只是遇到了这方面的问题,是否可能?

echo '<li><a href="' .$item->url. '" ' .($item->target != '') ? "target=$item->target" : "". '>' .$item->post_title. '</a></li>';

我不确定应该在哪里连接以及如何回显if语句结果。

2 个答案:

答案 0 :(得分:3)

运算符优先级可能很难看,特别是在PHP中,?:运算符的规则与大多数其他语言不匹配(在PHP中是左关联的,在其他地方是右关联的,尽管这是不太可能是你的问题,因为你只在这里使用了一次运算符。)

如有疑问,请使用括号使您的意图明确:

echo '<li><a href="' .$item->url. '" ' . (
    ($item->target != '')
    ? "target=$item->target"
    : ""
). '>' .$item->post_title. '</a></li>';

答案 1 :(得分:1)

你需要使用大括号,因为php无法识别tern的结尾。同前。

echo '<li><a href="' .$item->url. '" ' . (
  ($item->target != '')
  ? "target=$item->target"
  : ("". '>' .$item->post_title. '</a></li>')
);