シェア
//PHPの変数比較

PHPの変数比較

PHPでの比較演算子を理解していますか? ここでは、PHPの比較演算子とその動作について詳しく説明します。特にPHP 5.6を使用している場合に注意すべき点を紹介します。

1. PHPの比較演算子

PHPでは、「==」と「===」という2種類の比較演算子があります。これらの違いを理解することが非常に重要です。

「==」(Loose Comparison)

「==」は、両方のオペランドを比較する前に型を自動的に変換します。つまり、型が異なっていても、PHPが自動的に型を変換して比較します。

「===」(Strict Comparison)

「===」は型を厳密に比較します。型が異なる場合、比較はfalseを返します。

2. PHPの値の型

PHPでは、以下のようなデータ型があります。

  • String
  • Integer (または Long)
  • Float (または Double)
  • Boolean
  • Array
  • Object
  • NULL
  • Resource

3. Falsy値とTruthy値

PHPで「false」と見なされる値には、以下のものがあります:

  • false
  • 0
  • 0.0
  • "" (空文字列)
  • "0"
  • [] (空配列)
  • null (未設定の変数)
  • SimpleXMLオブジェクト (空タグから作成されたもの)

上記の値以外の値はすべて「true」と見なされます。

4. PHPの比較ルール

PHPでは、比較演算を行う際にいくつかの特別なルールがあります。例えば、文字列同士の比較や、数値と文字列の比較では予期しない結果が出ることがあります。

Null vs String

nullは空文字列として扱われます。

null == ""; // true
null == "0"; // false

Boolean & Null

BooleanやNullと比較する場合、PHPはこれらをBoolean型にキャストして比較します。

NAN == true; // true
null < NAN; // true
"0" < true; // true

String vs String

文字列同士の比較では、PHPは時々文字列を数値型や浮動小数点型にキャストして比較します。

"100" == "10e1"; // true
"16" == "0x10"; // true

Number vs String

文字列が数値として解釈できる場合、それは数値にキャストされて比較されます。

0 == "thang"; // true
345 == "345 thang"; // true
100 == "10e1thang"; // true

Array vs Array

2つの配列は、キーと値が一致すれば「==」で等しいと見なされます。

$array1 = ['3' => 3, '2' => 2, '1' => 1, '0' => 0];
$array2 = [false => '0', 1 => '1', 2 => '2', 3 => '3'];
$array1 == $array2; // true
$array1 === $array2; // false

Object vs Object

異なるクラスのインスタンスは比較できませんが、同じクラスのインスタンスで、属性の値が同じであれば、「==」で比較すると等しいと見なされます。さらに、「===」では、同一のインスタンスを指している場合のみ等しいと見なされます。

class C {
    public $c;
    public function __construct($c) {
        $this->c = $c;
    }
}
$a = new C("1");
$b = new C(1);
$a == $b; // true
$a === $b; // false
$a = $b = new C(1);
$a === $b; // true

5. その他の特殊な比較

  • 配列は、他のすべての型(boolean, array, objectではない)と比較すると、常に「true」と見なされます。
  • 空の配列は数値にキャストされると「0」となります。
  • オブジェクトは配列よりも大きいと見なされます。
[0] > 100; // true
[1] > "thang"; // true
(int) [null] == 1; // true
(float) [] == 0; // true
new stdClass > [1]; // true

6. 面白い事実

  • PHPの「==」は反射的(reflexive)ではないため、NAN == NANは「false」を返します。
  • PHPの「==」は対称的(symmetric)であり、$a == $b$b == $aは同じ結果を返します。
  • PHPの「==」は推移的(transitive)ではないため、$a == $b$b == $cが「true」を返しても、$a == $cは「true」を返さない場合があります。
1 == true; // true
2 == true; // true
1 == 2; // false

今すぐ応募







    福利厚生

    給料・ボーナス制度

    社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

    日本研修制度

    世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

    毎年社員旅行

    リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

    リバークレイン イベント

    チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

    社会保険制度

    リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

    他福利

    社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close