23
($DAO->get_num_rows() == 1) ? echo("is") : echo("are");

这个剂量似乎没有按预期为我工作,我收到一个错误“Unexpected T_ECHO”。我期待它呼应“是”或“是”。

我已经尝试过没有条件周围的括号。我只是不能以这种方式使用三元运算符吗?

返回一个整$DAO->get_num_rows()数值。

4

4 回答 4

55

三元运算符与 if-then 不同。你应该写的

echo ($DAO->get_num_rows() == 1) ? "is" : "are";

返回第二或第三位置的值。它不会在第二或第三位置执行语句。

于 2010-04-23T12:21:08.177 回答
6

三元运算符应该产生一个值——而不是回显它。


在这里,你可能想要这个:

echo ($DAO->get_num_rows() == 1) ? "is" : "are";


如果要使用两个echo,则必须使用if/else块:

if ($DAO->get_num_rows() == 1) {
    echo "is";
} else {
    echo "are"
}

这将与使用三元运算符的第一部分代码做同样的事情——除了它有点长。

于 2010-04-23T12:21:31.920 回答
2

三元运算符在评估条件后返回两个值之一。它不应该以您使用它的方式使用。

这应该有效:

echo ($DAO->get_num_rows() == 1 ? "is" : "are");
于 2010-04-23T12:21:45.957 回答
0

你可以使用

回声 ($DAO->get_num_rows() == 1) ?“是”:“是”;

于 2010-04-23T12:21:22.530 回答