by shigemk2

当面は技術的なことしか書かない

PHPの闇に滅びよ

「なんだいつもの話か」などと思わないように。

文字列 と 0を == で比較すると、何故かtrueが返ってくる

整数値を文字列と比較したり、比較に数値形式の文字が含まれる場合は、文字列が 数値に変換され、 数値としての比較を行います。これらのルールは、 switch 文にも適用されます。 === あるいは !== による比較では型変換は発生しません。 この場合は値だけでなく型も比較します。

ってさ。なんだこれは。ふざけているのだろうか。
だから、下のコードもこのようになるし、

<?php
var_dump("テスト" === 0); // bool(false)
var_dump("テスト" == 0); // bool(true)
function ymjn($a) {
  switch($a) {
  case 0: // $aが文字列だったら、これより下へは辿りつけない。
    return 'ウホッ';
  case 1:
    return 'イイ男';
  default:
    return '';
  }
}

PHP: 比較演算子 - Manual