【PHP】相変わらず慣れないPHPの条件分岐(文字列と数値の比較)

PHPの条件分岐で困ったことがある人は多いのではないでしょうか

最近やらかした失敗の内容をまとめてみたいとおもいます

いきなりですが

$str = '1から始まる文字列';

if( 1 == $str )
{
  echo 'hello';
}

helloという文字列は出力されると思いますか?







helloは表示されます

かなりびっくりしました

当然の事ながら

文字列の'1'と数値の1は==で評価してしまうとtrueになるのはPHPの世界では結構有名ですよね

まさか

1から始まる文字列と数値の1が==で評価するとtrueになるとは

まあ、僕がやらかした失敗はそもそも==じゃなくて===で評価しとけということでもあるのですが(汗)

念のため数パターン実験してみました

$str = '1から始まる文字列';

if( 1 == $str )
{
  echo '表示されます';
}

if( 1 === $str )
{
  echo '表示されません';
}

if( '1' == $str )
{
  echo '表示されません';
}

if( '1' === $str )
{
  echo '表示されません';
}

どうやら

1 == '1から始まる文字列'

はtrue

'1' == '1から始まる文字列'

はfalse

と評価されるみたいですね

ちなみに当然の事ながら1だけで起きる現象ではありません

2でも起きるし、意外なことに2桁の数字でも全く同じ現象がおきます

2 == '2から始まる文字列'

10 == '10から始まる文字列'

はともにtrueと評価されます

数値で始まらず途中に数値が入るものと数値の比較ではおきませんでした(このパターンで起きたら本当にびっくりです)

1 == '途中に1を含む文字列'

はfalseと評価されます

結構小さなことですか、驚きました

役に立ったと思ったら下記をクリックお願いします。

今後の更新の励みになります。

にほんブログ村 IT技術ブログ IT技術メモへ

にほんブログ村 IT技術ブログへ

不定期ですが技術ネタを共有して行きますのでもしよろしければ購読いただければと思います

follow us in feedly

スポンサーリンク

スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:PHP  Trackback:0 comment:0 

プロフィール

6rats

Author:6rats
こんにちは、ITベンチャーで働くエンジニアです
主に自分の周りで起きた技術的なことをメモとして書き残して行きます。
Android以外にもRuby/Ruby on RailsやFuelPHPなどなどたまにやります。基本的なスタンスとしては興味があるもしくは必要になったらいろんなことにチャレンジします。
最近はiOSアプリ開発を始めています。

購読
follow us in feedly
個人プロダクト

Androidアプリ

Twitterクライアント

Webアプリケーション

EcPriceWatch(Amazon価格の推移を計測、最安値を知らせるサービス)
Google AdSense
ブログ村
にほんブログ村 IT技術ブログへ
にほんブログ村
ブロとも申請フォーム

この人とブロともになる