Troubleshooting “Unexpected T_ECHO” in ternary ope

2019-01-18 02:13发布

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

This dose not seem to be working for me as intended, I get an error "Unexpected T_ECHO". I am expecting it to echo either 'is' or 'are'.

I have tried it without the brackets around the conditional. Am I just not able to use a ternary operator in this way?

The $DAO->get_num_rows() returns an integer value.

4条回答
冷血范
2楼-- · 2019-01-18 02:51

The ternary operator should result in a value -- and not echo it.


Here, you probably want this :

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


If you want to use two echo, you'll have to work with an if/else block :

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

Which will do the same thing as the first portion of code using the ternary operator -- except it's a bit longer.

查看更多
Fickle 薄情
3楼-- · 2019-01-18 02:56

The Ternary operator is not identical to an if-then. You should have written it

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

It returns the value in the 2nd or 3rd position. It does NOT execute the statement in the 2nd or 3rd position.

查看更多
爷、活的狠高调
4楼-- · 2019-01-18 03:05

The ternary operator returns one of two values after evaluating the conditions. It is not supposed to be used the way you are using it.

This should work:

echo ($DAO->get_num_rows() == 1 ? "is" : "are");
查看更多
叼着烟拽天下
5楼-- · 2019-01-18 03:11

U can use

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

查看更多
登录 后发表回答