そーくのつれづれぶろぐ

web系エンジニアの勉強したことなど

【PHP】ゆるやかな比較(==)は4ポイント覚えたらマスターできた

動機

https://www.php.net/manual/ja/types.comparisons.php

PHP特有の"ゆるやかな比較"を利用した書き方は簡便にかけるし可読性が高くてよい反面、思わぬ不具合の原因であったり日々の実装で思うように動かないときの原因にも結構なりえるので結構このページを参照している。

文字列→数値変換でハマったのをきっかけに今一度上記の表を眺め見ていたけれども、数点のポイントを覚えておけばあとはその場で考えてぱっと思い出せるなと気づいたため、忘れないうちに書き残すことにする。

覚えておくべき4ポイント

  1. NULLはFALSEと同義
  2. 空はFALSEと同義
  3. 0はFALSEと同義
  4. 式の中にstringと数値が両方存在している場合はstringが数値型に評価されてから比較される
    • stringの数値変換ルールは↓にまとめてます

soachr.hatenablog.com

雑感

入門書では1,2,3は言及されていた(3ヶ月前くらいに読んでいた)。JavaからのPHPだったため記憶に残ったのかもしれない。なのであとは文字列、数値の曖昧さを潰したらほぼほぼ大丈夫だったというのに過去記事を書き終わってから知った。 数値を文字列に変換は特に問題はないはずだからこれで実装時でハマることはなくなった気がする。よし。