PHP

PHP 比較演算子の使い方

2015/05/09

「比較演算子」の使い方です。

比較演算子とは、左辺(左の値)と右辺(右の値)を比べて、正しければtrueを返す演算子です。
比較演算子には「==」「===」「!=」「!==」「<」「<=」「>」「>=」があります。
通常数学で「等しい」を指すイコール「=」はPHPでは代入演算子といい、
右辺を左辺に代入するという意味になりますので注意しましょう。

それでは1つずつ見て行きましょう。

==

「==」は左辺と右辺が等しい時にtrueを返します。
ちょっと変な例ですが、下記は5と5を比べて結果(true)を$xに代入する形になります。

<?php
    $x = 5 == 5;
    
    // var_dumpでtrueが入っているか確認します。
    var_dump($x);

/*
上記は「var_dump(5 == 5);」としても同じなので以降はこの形で結果を表示していきます。
*/
?>

» 実行結果
次に5と4を比べて結果を表示します。

<?php
    var_dump(5 == 4);
?>

» 実行結果

このように、比較演算子は結果が正しければtrueを、間違っていればfalseを返します。
しかし「==」はすこし曖昧で、「変数の使い方」の中で「trueは1でもある」と書きましたが、0・false・null・空文字以外はtrueと判断してしまうのです。その為下記の場合、trueを返してしまいます。

<?php
    var_dump(1 == true);
?>

» 実行結果

===

論理値を比較する時はもっと厳密に比較する必要があります。
その際に使用するのが「===」で、データ型と値の両方が等しい場合のみにtrueを返してくれます。

<?php
    // 厳密に比較することでfalseを返してくれます。
    var_dump(1 === true);
?>

» 実行結果

データ型を比較しますので、文字列の1と数値の1を比較してもfalseが返ってきます。

<?php
    $x = "1"; // 文字列の1を$xに代入
    $y = 1;   // 数値の1を$yに代入

    // 「==」で比較するとtrueが返ってきます。
    var_dump($x == $y);
    echo "<br>\n";

    // 「===」で比較するとfalseが返ってきます。
    var_dump($x === $y);
?>

» 実行結果

!=

「!=」は左辺と右辺が等しくない時にtrueを返します。

<?php
    // 5と4は等しくないのでtrueを返します。
    var_dump(5 != 4);
?>

» 実行結果

!==

「!==」はデータ型と値の両方が等しくない場合にtrueを返します。

<?php
    $x = "1"; // 文字列の1を$xに代入
    $y = 1;   // 数値の1を$yに代入

    // 「!=」で比較すると等しいと判断されfalseが返ってきます。
    var_dump($x != $y);
    echo "<br>\n";

    // 「!=」で比較すると等しくないと判断されtrueが返ってきます。
    var_dump($x !== $y);
?>

» 実行結果

<

「<」は左辺が右辺より小さい時にtrueを返します。 [php] <?php // 4は5より小さいのでtureを返します。 var_dump(4 < 5); echo "<br>\n"; // 5は5より小さくはないのでfalseを返します。 var_dump(5 < 5); ?> [/php] » 実行結果

<=

「<=」は左辺が右辺より小さい もしくは 等しい場合にtrueを返します。 [php] <?php // 4は5より小さいのでtureを返します。 var_dump(4 <= 5); echo "<br>\n"; // 5と5は等しいのでtrueを返します。 var_dump(5 <= 5); ?> [/php] » 実行結果

>

「>」は左辺が右辺より大きい場合にtrueを返します。

<?php
    // 5は4より大きいのでtureを返します。
    var_dump(5 > 4);
    echo "<br>\n";

    // 5は5より大きくはないのでfalseを返します。
    var_dump(5 > 5);
?>

» 実行結果

>=

「>=」は左辺が右辺より大きい もしくは 等しい場合にtrueを返します。

<?php
    // 5は4より大きいのでtureを返します。
    var_dump(5 >= 4);
    echo "<br>\n";

    // 5と5は等しいのでtrueを返します。
    var_dump(5 >= 5);
?>

» 実行結果

最後に

これまでの例は数値でしたが、「==」「===」「!=」「!==」については文字列での比較も可能です。

<?php
    $x = "こんにちは";

    var_dump($x == "こんにちは");
?>

» 実行結果

-PHP