<?php echo (isset($var)) ?: $var; ?>
この構文は正しいですか?$ varが設定されない場合、空の文字列またはnullの場合、これは何を表示しますか?これを使っても大丈夫ですか?
<?php echo (isset($var)) ?: $var; ?>
この構文は正しいですか?$ varが設定されない場合、空の文字列またはnullの場合、これは何を表示しますか?これを使っても大丈夫ですか?
これ:
<?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
など。
cond
isset
$z==$y
構文は正しく、使用法は正しくありません。ここで言ってください:
$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
、ショートカットはありません。
コードには意味がありません。通知またはエコー 1 が生成されます。設定されていない $var を出力することはできません。
構文は問題ありません。
$var が設定されている場合は出力され、設定されていない場合は、設定されていない $var のエコーに関する通知がスローされます。
error_reporting が E_NONE に設定されている場合は白い画面が表示され、$var が設定されている場合は $var の値が表示されます
これはどちらの方法でも $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");
いいえ、この構文は正しくありません。
エコーの時点までに、すべての変数を設定し、適切にフォーマットする必要があります。
それ以外の場合、開発者は、変数がどこから来て、何が含まれているのかわからないことを意味します。つまり、インジェクションへのまっすぐな道です。
したがって、適切な構文は次のようになります
<?=$var?>
三項については、私は好きではありません。