PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

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」となります。もし数値が 00.0 であれば、結果は false(出力上は空文字列)になります。

まとめ

  • 「!!」は単一の演算子ではなく、「!」を2回適用した記法である。
  • 1回目の「!」で値がブール型に変換されて反転され、2回目の「!」でもう一度反転される。
  • 最終的には、元の値の真偽評価結果をそのまま true / false として得られる。
  • 条件分岐やAPIレスポンスなどで、値を厳密なブール値として扱いたいときに役立つ。
  1. C#の除算演算子(/)とは?使い方とサンプルコードを解説

    C#における除算演算子(/)は、分子を分母で割るために使用される演算子です。例えば、9 / 3 のように記述します。 除算演算子は、C#の算術演算子(Arithmetic Operators)に分類されます。この記事では、C#で算術演算子を実装する完全なサンプルコードを通じて、除算演算子の使い方を詳しく解説します。 除算演算子の基本的な使い方 以下のように、2つの変数 num1 と num2 に対して除算演算子を適用し、その結果を出力することができます。 result = num1 / num2; Console.WriteLine(Division: Value is {0}, result

  2. 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