スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告 

【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と評価されます

結構小さなことですか、驚きました
スポンサーサイト
テーマ : プログラミング
ジャンル : コンピュータ

Tag:PHP  Trackback:0 comment:0 

Comment

comment form
(編集・削除用):
管理者にだけ表示を許可
プロフィール

6rats

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

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

Androidアプリ

Twitterクライアント

Webアプリケーション

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

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。