8

次のような条件で変数を割り当てることができることを知っています。

if ($var = $foo)

ただし、条件自体で何もする必要がないため、空の括弧が残ることがよくあります。後で何かをする必要なく、他の方法で$varif$fooを割り当てることはできますか?true

また、 if isに割り当てることはでき$varますが、 if isは何か他のことをしますか? お気に入り:$foo$footrue$foofalse

if ($var = !$foo) {
    if ($var = !$bar) {
        //Etc...
    }
}

基本的には、より多くのフォールバック/デフォルトが必要です。

4

4 に答える 4

5

これは非常に古い投稿ですが。偽の値に対するフォールバック ロジックは、次のようにコーディングできます。

$var = $foo ?: $bar ?: "default";

この場合、$fooが偽造された値 (false、空の文字列など) である$bar場合、それ以外の場合は にフォールバックします$foo。bar が改ざんされた値の場合、文字列 にフォールバックしますdefault

これは、 だけでなく、偽造された値でも機能することに注意してくださいtrue

例:

$foo = "";
$bar = null;
$var = $foo ?: $bar ?: "default";  

$vardefault空の文字列nullは「false」値と見なされるため、テキストが含まれます。

[アップデート]

PHP 7 では、新しい null 合体演算子: を使用できます。??これは、変数が isset() で存在するかどうかもチェックします。これは、配列でキーを使用している場合に役立ちます。

例:

$array = [];
$bar = null;
$var = $array['foo'] ?? $bar ?? "default";

PHP 7 より前では、これによりUndefined index: foo通知が行われていました。しかし、null 合体演算子では、その通知は表示されません。

于 2016-08-19T08:04:57.453 に答える
4

代わりに、このような三項演算子を使用できます

$var = ($foo == true)?$foo:"put here what you want";
于 2013-05-16T07:16:08.590 に答える