5

ここではかなり簡単な質問です。いくつかのコードを調べていて、特定の変数をブール値に変換するように見える関数を見てきました。こんなふうになります:

function to_bool( $var ) {
    return !!$var;
}

非常に単純ですが、どのように機能しますか?これまで見たことがなく、グーグルは私をどこにも連れて行ってくれませんでした。余分な「!」結果を反転させるようなものですか?'!$ var'を使用して、varがfalseであるかどうかを確認できます。また、'!!'も同様です。'false'をtrueに、またはその逆に変換しますか?

4

5 に答える 5

9

それはどのように機能しますか?

not演算子は、変数を条件付きに配置します。したがって、結果はブール値になります。2番目はその値を反転しません。

このような関数ではなく、コードで明示的なキャストを使用する方が明確です。

(bool)$var;
于 2012-10-03T23:02:50.360 に答える
3

1つ!は反転ブール値になるため、2つ!!は非反転ブール値になります。これは変数の二重否定であり、ブール型として返されます

于 2012-10-03T23:02:09.677 に答える
3

テイク!!2

!2に評価します!(true)

!falseこれは最終結果に評価されtrueます。not booleanは、基本的に右のオペランドをブールとして扱います。

于 2012-10-03T23:02:10.847 に答える
2

うーん...おもしろい。

さて、PHPは、変数が「true」か「false」かを判断するときに、特定の一連のルールに従います。

特定の演算子を使用すると、その決定が強制されます。たとえば、演算子を使用して文字列と"a"整数を追加すると、演算子の目的は連結することであるため、を取得します。2."a2".

ここで、最初の!意味は、変数を否定しようとしていることを意味します。何かを否定するということは、最初にそれをブール値として扱わなければならないことを意味します。次に、2番目は!それを無効にします。

それは奇妙なやり方です。率直に言って、if ($var)あなたと同じ結果が得られますif (to_bool($var))

于 2012-10-03T23:04:13.777 に答える
0

これは型変換の観点からも見ることができます。PHPでは、値に対して論理式を実行すると、ブール値の結果が得られます。したがって、最初の否定は暗黙的に値をブール値としてキャストし、2番目に評価されるのは最初の否定を逆にすることです。他の論理演算子を使用して同じことを行うことができます(ただし、優先順位が異なるものもあるため、お勧めしません)。

// using "truthy" 2 as a value //

!!2          // true 
2 ||  false  // true
2 &&  true   // true
2 xor false  // true

// using "falsey" 0 as a value //

!!0         // false
0 ||  false // false
0 &&  true  // false
0 xor false // false
于 2018-10-21T17:22:51.433 に答える