Menu
Coddy logo textTech

Equality & Identity

CoddyのPHPジャーニー「基礎」セクションの一部 — レッスン 24/71。

PHP は、値が等しいかどうかをチェックする2つの方法を提供します:等価演算子 (==) と 同一性演算子 (===)。この違いを理解することは、信頼性の高いコードを書くために重要です。

等価演算子 (==) は、値を同じ型に変換した後に値を比較します。これを「ゆるい比較」と呼びます:

<?php
var_dump(5 == "5");    // bool(true) - 文字列が数値に変換される
var_dump(0 == false);  // bool(true) - 両方とも 0 になる
var_dump(1 == true);   // bool(true) - 両方とも 1 になる
?>

同一性演算子(===)は値との両方を比較します。変換は行われないため、両方が完全に一致する必要があります:

<?php
var_dump(5 === "5");   // bool(false) - int 対 string
var_dump(5 === 5);     // bool(true) - 同じ型と値
var_dump(0 === false); // bool(false) - int 対 bool
?>

「等しくない」比較には、!= (緩い) または !== (厳密) を使用します:

<?php
var_dump(5 != "5");    // bool(false) - 値は等しい
var_dump(5 !== "5");   // bool(true) - 型が異なる
?>

ベストプラクティスとして、予期せぬ型変換の驚きを避けるために ===!== を優先してください。

challenge icon

チャレンジ

簡単

入力から2つの値を読取:数値(文字列として)と整数。

等価性および同一性演算子を使用して、以下の比較を評価し、各結果をvar_dump()を使用して新しい行にそれぞれ出力してください:

  1. 緩い比較(==)を使用して、文字列値が整数と等しいかをチェック
  2. 厳密な比較(===)を使用して、文字列値が整数と等しいかをチェック
  3. 緩い比較(!=)を使用して、文字列値が整数と等しくないかをチェック
  4. 厳密な比較(!==)を使用して、文字列値が整数と等しくないかをチェック

注意: 最初の値を文字列として保持(キャストしない)。2番目の値を整数にキャスト。

例:

入力が4242の場合、出力は次のようになります:

bool(true)
bool(false)
bool(false)
bool(true)

説明:

  • "42" == 42 は true です(型変換後の値が等しい)
  • "42" === 42 は false です(文字列 vs int - 型が異なる)
  • "42" != 42 は false です(値が等しい)
  • "42" !== 42 は true です(型が異なる)

チートシート

PHPには値を比較する2つの方法があります:

等価演算子 (==) - 比較前に値を同じ型に変換する緩い比較:

<?php
var_dump(5 == "5");    // bool(true) - string converted to number
var_dump(0 == false);  // bool(true) - both become 0
var_dump(1 == true);   // bool(true) - both become 1
?>

同一性演算子 (===) - 値と型両方をチェックする厳密な比較:

<?php
var_dump(5 === "5");   // bool(false) - int vs string
var_dump(5 === 5);     // bool(true) - same type and value
var_dump(0 === false); // bool(false) - int vs bool
?>

等しくない演算子:

<?php
var_dump(5 != "5");    // bool(false) - values are equal (loose)
var_dump(5 !== "5");   // bool(true) - types differ (strict)
?>

ベストプラクティス:予期しない型変換を避けるために ===!== を使用してください。

自分で試してみよう

<?php
// 入力の読み取り
$stringValue = trim(fgets(STDIN));
$intValue = intval(trim(fgets(STDIN)));

// TODO: 以下にコードを書く
// var_dump() を使用して、各比較の結果を新しい行に印刷する:
// 1. 緩い等価 (==)
// 2. 厳密な等価 (===)
// 3. 緩い不等価 (!=)
// 4. 厳密な不等価 (!==)

?>
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン