2010-04-23 104 views
21
($DAO->get_num_rows() == 1) ? echo("is") : echo("are"); 

該劑量對於我來說似乎沒有達到預期的效果,但出現「意外T_ECHO」錯誤。我期待它迴應「是」或「是」。三元運算符語句中的「意外的T_ECHO」故障排除

我試過了,沒有括號括住條件。我只是無法以這種方式使用三元操作符?

$DAO->get_num_rows()返回一個整數值。

+2

考慮使用模板,從企業直接輸出未logig – 2010-04-23 12:37:08

回答

46

三元運算符與if-then不完全相同。你應該寫它

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

返回在第二或第三位置的值。它不是在第二或第三位執行語句

+1

如果返回值,所以如果更換''通過它print'工作echo'? – Mageek 2012-07-07 16:07:00

+0

@Mageek - 它「有效」?或者它不死?僅僅因爲它打印了某些東西並不意味着它完成了OP的任務。我的建議應該如此。 – MJB 2012-07-10 16:34:48

+1

我想明白爲什麼'($ DAO-> get_num_rows()== 1)? print(「is」):print(「are」);'工作,但'($ DAO-> get_num_rows()== 1)?回聲(「是」):回聲(「是」);'不。 – Mageek 2012-07-10 16:58:26

0

U可以使用

回波($ DAO-> get_num_rows()== 1)? 「是」:「是」;

6

三元運算符應該產生一個值 - 而不是回顯它。


在這裏,你可能希望這樣的:

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


如果你想使用兩個echo,你必須有if/else塊的工作:

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

這將與使用三元運算符的代碼的第一部分執行相同的操作 - 除了它稍微長一點。

2

三元運算符返回評估條件後的兩個值之一。它不應該以你使用它的方式使用。

這應該工作:

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