PHPのダブル否定(!!)演算子とは?仕組みと使い方を実例で解説
PHPにおけるダブル否定(!!)演算子は、論理否定(NOT)演算子「!」を2回連続して適用する書き方です。1つ目の「!」が値を否定(真偽値への変換と反転)し、2つ目の「!」がその結果を再度反転します。その結果、元の値はブール型(true / false)に明示的にキャストされることになります。
このテクニックは、任意の値を「真か偽か」という観点だけで評価したい場合に便利です。たとえば、文字列や数値が「空かどうか」「0かどうか」を判定し、結果を true または false のみで扱いたい場面などで活用されます。
基本的な動作の仕組み
PHPでは、次のような値は偽(false)と評価されます。
- ブール値の
false - 整数の
0や浮動小数点数の0.0 - 空の文字列
""および文字列"0" - 要素を持たない配列
null
これら以外の値は真(true)と評価されます。ダブル否定を使うと、元の値が真と評価されるなら true、偽と評価されるなら false が返ります。
例1:文字列に対するダブル否定
以下のコードでは、文字列 "0.1" に対してダブル否定を適用しています。
<?php
$str = "0.1";
echo "Value = $str";
$res = !!$str;
echo "\nDouble Negated Value = $res";
?>出力結果
Value = 0.1 Double Negated Value = 1
文字列 "0.1" は空ではなく、"0" でもないため真(true)と評価されます。true を echo で出力すると整数の 1 として表示されるため、結果は「1」になります。
例2:floatval() で変換した数値に対するダブル否定
次に、文字列を floatval() 関数で浮動小数点数に変換し、その数値に対してダブル否定を適用する例を見てみましょう。
<?php
$str = "100.56";
echo "String = $str";
$num = floatval($str);
echo "\nNumber (Converted from String) = $num";
$res = !!$num;
echo "\nDouble Negated Value = $res";
?>出力結果
String = 100.56 Number (Converted from String) = 100.56 Double Negated Value = 1
数値 100.56 は 0 以外のため真(true)と評価され、ダブル否定の結果も true、すなわち出力上は「1」となります。もし数値が 0 や 0.0 であれば、結果は false(出力上は空文字列)になります。
まとめ
- 「!!」は単一の演算子ではなく、「!」を2回適用した記法である。
- 1回目の「!」で値がブール型に変換されて反転され、2回目の「!」でもう一度反転される。
- 最終的には、元の値の真偽評価結果をそのまま
true/falseとして得られる。 - 条件分岐やAPIレスポンスなどで、値を厳密なブール値として扱いたいときに役立つ。
-
C#の除算演算子(/)とは?使い方とサンプルコードを解説
C#における除算演算子(/)は、分子を分母で割るために使用される演算子です。例えば、9 / 3 のように記述します。 除算演算子は、C#の算術演算子(Arithmetic Operators)に分類されます。この記事では、C#で算術演算子を実装する完全なサンプルコードを通じて、除算演算子の使い方を詳しく解説します。 除算演算子の基本的な使い方 以下のように、2つの変数 num1 と num2 に対して除算演算子を適用し、その結果を出力することができます。 result = num1 / num2; Console.WriteLine(Division: Value is {0}, result
-
Pythonの「is not」演算子とは?仕組みと使い方をわかりやすく解説
Pythonの「is not」演算子とは Pythonにおける「is not」は、同一性を比較する演算子(アイデンティティ演算子)の一つです。演算子の左右にある2つの変数が同じオブジェクトを参照している場合には False を返し、異なるオブジェクトを参照している場合には True を返します。 基本的な使い方の例 以下のコードで実際の動作を確認してみましょう。 >>> a = 10 >>> b = 20 >>> id(a), id(b) (1581561184, 1581561504) >>> a is not b