タグ

ブックマーク / blog.mura.com (1)

  • PHPではa==b, b==cでもc!=aなことがある

    PHPの比較の素晴らしさ加減は正常 @ はてな匿名ダイアリー PHPの「==」は数値比較なので、文字列は数値に変換されてから比較される。 PHPの「文字列→数値」の暗黙の変換は、文字列が0xで始まると、intval($str, 16)、つまり16進数として変換してくれる。 intval($str, 16)は、文字列の途中で変換できなくても文句を言わず、部分文字列を数値に変換する。なので、"0xax" == 10。 ただし、0で始まる文字列を8進数として変換してはくれない。 1と2は仕様と言われれば個人的には受け入れられる。 3あたりからチト厳しい。せめてlintで警告が欲しい。「===」と書いたつもりが「==」だった、というケアレスミス対策に。 4は対称性が崩れる分、覚える事が増えて面倒だ。暗黙の型変換がこういう仕様だというなら、それを明示的にやる関数 / 演算子があった方がよいと思う(既

  • 1