PHP 5.3 以降、三項演算子の中間部分を省略することができます。式 expr1 ?: expr3 は、expr1 が TRUE と評価された場合は expr1 を返し、それ以外の場合は expr3 を返します。
変数のデフォルト値を設定するコードに従うよりも優れた、またはより簡潔な方法はありますか?
$v = isset($v) ? $v : "default value";
PHP 5.3 以降、三項演算子の中間部分を省略することができます。式 expr1 ?: expr3 は、expr1 が TRUE と評価された場合は expr1 を返し、それ以外の場合は expr3 を返します。
変数のデフォルト値を設定するコードに従うよりも優れた、またはより簡潔な方法はありますか?
$v = isset($v) ? $v : "default value";
TL;DR - いいえ、その表現をこれ以上短くすることはできません。
あなたが望むのは、短縮された三項式が暗黙的に実行することisset()
です。これはメーリング リストで議論されており、概念をカバーするifsetor
RFCも作成されています。
短縮された三項演算子は上記の議論の時点ですでに存在していたため、存在しない operator を使用して次のようなものが提案され??
ました。
// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';
が定義されていない'default value'
場合に割り当てます。$v
ただし、これまでのところ、このようなものはメイン言語では実装されていません。それまでは、あなたが書いたものをこれ以上短くすることはできません。
この恐ろしいコンストラクトは短くなりますが、変数が存在するが評価される場合にデフォルト値を割り当てるため、同じではないfalse
ことに注意してください。
// DO NOT USE
$v = @$v ?: 'default value';
これを尋ねただけで、ここで指摘されました。key
したがって、 の を使用する場合array
、これは改善される可能性があります
function isset_get($array, $key, $default = null) {
return isset($array[$key]) ? $array[$key] : $default;
}
短い構文は次のとおりです。
isset($v) || $v="default value";
いいえ。が設定されているかどうか本当にわからない場合は、これが正しい方法です$v
。
三項演算子を使用する場合。