0
<?php echo (isset($var)) ?: $var; ?>

この構文は正しいですか?$ varが設定されない場合、空の文字列またはnullの場合、これは何を表示しますか?これを使っても大丈夫ですか?

4

7 に答える 7

2

これ:

<?php echo (isset($var)) ?: $var; ?>

これと同じことを行います:

<?php
 if (isset($var)) {
  // do nothing
 } else {
  echo $var;
 }
?>

したがって、空/ヌル/などの場合に変数を表示しようとしています...

関数の場合:

<?php $k= (cond ? do_if_true : do_if_false); ?>

$k新しい変数 などになる可能性があります。- 、echoなど。
condisset$z==$y

于 2013-03-04T15:46:20.983 に答える
1

構文は正しく、使用法は正しくありません。ここで言ってください:

$var = something();
echo $var ?: 'false';

これは次と同等です。

$var = something();
if ($var) {
    echo $var;
} else {
    echo 'false';
}

または省略形$var ? $var : 'false'

が設定されている場合は( isset($var))trueの結果を出力するため、あなたの例は無意味です。$var $var

echo isset($var) ? $var : nullまたはが必要ですがif (isset($var)) echo $var、ショートカットはありません。

于 2013-03-04T15:47:27.940 に答える
0

コードには意味がありません。通知またはエコー 1 が生成されます。設定されていない $var を出力することはできません。

于 2013-03-04T15:47:07.623 に答える
0

構文は問題ありません。

$var が設定されている場合は出力され、設定されていない場合は、設定されていない $var のエコーに関する通知がスローされます。

error_reporting が E_NONE に設定されている場合は白い画面が表示され、$var が設定されている場合は $var の値が表示されます

于 2013-03-04T15:48:10.190 に答える
0

これはどちらの方法でも $var をエコーし​​ます。

PHP 5.3 以降、三項演算子の中間部分を省略することができます。式 expr1 ?: expr3 は、expr1 が TRUE と評価された場合は expr1 を返し、それ以外の場合は expr3 を返します。

したがって、$var が設定されている場合、$var をエコーし​​ます (TRUE と評価されるため)。何も設定されていないか、false と評価される場合は、とにかく $var をエコーするように手動で要求します。

理想的にはあなたが望む:

(condition  ?  if_true_then_do_this : if_false_then_do_this)

簡単に言えば、これは

   (condition ? ? false)

両方の場所で $var を指定したので、どちらの方法でも $var を取得します。あなたはこれを求めている:

echo ($var?:"null");
于 2013-03-04T15:48:29.057 に答える
0

いいえ、この構文は正しくありません。
エコーの時点までに、すべての変数を設定し、適切にフォーマットする必要があります。
それ以外の場合、開発者は、変数がどこから来て、何が含まれているのかわからないことを意味します。つまり、インジェクションへのまっすぐな道です。

したがって、適切な構文は次のようになります

<?=$var?>

三項については、私は好きではありません。

于 2013-03-04T15:48:41.290 に答える