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

これは意図したとおりに機能していないようで、「予期しない T_ECHO」というエラーが表示されます。「is」または「are」のいずれかがエコーされることを期待しています。

条件を括弧なしで試してみました。このように三項演算子を使用できないのでしょうか?

$DAO->get_num_rows()整数値を返します。

4

4 に答える 4

55

三項演算子は、if-then と同じではありません。あなたが書いたはずです

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

2番目または 3 番目の位置の値を返します。2 番目または 3 番目の位置にあるステートメントは実行しません。

于 2010-04-23T12:21:08.177 に答える
6

三項演算子は値を返す必要があり、それをエコーし​​ません。


ここで、おそらくこれが必要です:

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


two を使用する場合echoは、if/elseブロックを使用する必要があります。

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

これは、三項演算子を使用したコードの最初の部分と同じことを行いますが、少し長くなります。

于 2010-04-23T12:21:31.920 に答える
2

三項演算子は、条件を評価した後、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 に答える