1

SQL リターンに対してif/elseが機能しています。空の場合は、デフォルトを表示します。

<?php 
if($row['imagename']==='')
    {
        echo "placeholder.png";
    }
else 
    {
         echo htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8');
    } ?>

そして、私はそれをすべて1行にまとめようとしました

<?php ($row['imagename']==='') ? echo "placeholder.png";:echo htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>

これは失敗します。

誰かが失敗した理由を明確にできますか?

ティア

4

5 に答える 5

9

echoセミコロンを削除し、先頭にを追加します。

<?php echo ($row['imagename']==='') ? "placeholder.png" : 
      htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>
于 2012-07-27T11:28:50.240 に答える
6
<?php echo ($row['imagename']==='') ? "placeholder.png" : htmlspecialchars($row['imagename'], ENT_QUOTES, 'UTF-8'); ?>

三項演算子の使い方が間違っている

于 2012-07-27T11:30:46.080 に答える
5

言語構造として、式echoに含まれるのを好みません?:。代わりにこれを行います:

echo true ? 'foo' : 'bar';
于 2012-07-27T11:30:29.983 に答える
2

ステートメントではなく式で使用することを意図しているため、失敗します。 三項演算子の下のphp比較演算子を参照してください。

式の最後に a を付けること;で、それらをステートメントにしました。

2 つの違いを理解するには、式とステートメントを参照してください。

于 2012-07-27T11:32:51.820 に答える
1

print と echo の違いの 1 つは、print には値があり、echo には値がないことです。

コンストラクト:

$test ? planA : planB

結果を使用する意図がない場合でも、値 planA または planB のいずれかを選択します。echo には値がないため、機能しません。

$test ? echo 'plan A' : echo 'plan B'; // <-- not working

この単純な構文を使用する場合は、echo ステートメントを print ステートメントに置き換えるだけです。

$test ? print 'plan A' : print 'plan B'; // <-- should work
于 2015-04-19T03:04:22.820 に答える