5

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

変数のデフォルト値を設定するコードに従うよりも優れた、またはより簡潔な方法はありますか?

$v = isset($v) ? $v : "default value";
4

5 に答える 5

6

TL;DR - いいえ、その表現をこれ以上短くすることはできません。

あなたが望むのは、短縮された三項式が暗黙的に実行することisset()です。これはメーリング リストで議論されており、概念をカバーするifsetorRFCも作成されています。

短縮された三項演算子は上記の議論の時点ですでに存在していたため、存在しない operator を使用して次のようなものが提案され??ました。

// PROPOSAL ONLY, DOES NOT WORK
$v = $v ?? 'default value';

が定義されていない'default value'場合に割り当てます。$v

ただし、これまでのところ、このようなものはメイン言語では実装されていません。それまでは、あなたが書いたものをこれ以上短くすることはできません。

この恐ろしいコンストラクトは短くなりますが、変数が存在するが評価される場合にデフォルト値を割り当てるため、同じではないfalseことに注意してください。

// DO NOT USE
$v = @$v ?: 'default value';
于 2012-11-22T07:43:29.613 に答える
2

これを尋ねただけで、ここで指摘されました。keyしたがって、 の を使用する場合array、これは改善される可能性があります

function isset_get($array, $key, $default = null) {
    return isset($array[$key]) ? $array[$key] : $default;
}
于 2012-12-29T23:57:46.360 に答える
2

短い構文は次のとおりです。

isset($v) || $v="default value";
于 2014-01-24T21:24:01.003 に答える
0

いいえ。が設定されているかどうか本当にわからない場合は、これが正しい方法です$v

于 2012-11-22T07:41:40.090 に答える
0

三項演算子を使用する場合。

于 2012-11-22T07:43:22.637 に答える