PHP

PHP

PHPの驚くべき演算子

先日、PHPだとif('01' == '1')がtrueになってしまうという記事を書きました。
PHPでは'01'と'1'は同じなの!?

が、

調べてみると演算子(==)に関して驚くべきことが分かりました。

 

結論から言うと、

演算子(==)

は使うなということのようです。
※厳密には全く使わないという訳にはいかないような気もしますが。。。

 

というのは、

if("1" == 1) ~; 
は当然「true」です。

if("x1" == 1) ~;
は当然[]false」になります。

あと、
if("1x" == "1") ~;
も当然「false」です。

 

が、

驚くのはここからで、

if("1x" == 1) ~;
↑これ、「true」になります。

if("1あ" == 1) ~;
も「true」になります。

 

対処方法としては、

if("1x" === 1) ~;

というように、

「===」

を使って型まで厳密にチェックしたり、

if(strcmp("1x", 1) == 0) ~;

とすればいいとのことです!!

関連記事

  1. PHP

    PHP

    さくらインターネット 共用サーバでエラーログを出力

    さくらインターネットの共用サーバを借りて頂いている業者さんからの依頼で…

  2. PHP

    PHP

    PHPで切り捨て、切り上げ、四捨五入

    プログラミングをしている時に、何らからの計算処理をすると小数点以下…

  3. MySQL

    PHP

    MyISAMではロールバック(rollback)が出来ない!!

     データベースでデータの管理を行う際に、データの整合性を保つために…

  4. PHP

    PHP

    【PHP】imagepng()の圧縮率設定について

    imagepng(): gd-png error: compressi…

  5. PHP

    PHP

    UbuntuサーバからPHP5.6を完全に削除

    UbuntuサーバにインストールしているPHP5.6を訳合ってアン…

  6. PHP

    PHP

    PHPで日付けを扱う

    PHPで日付けを扱う時によく使用するのがdate()関数です。&n…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

最近の記事

  1. JavaScript
  2. バージョンアップ
  3. JavaScript
  4. セキュリティー
  5. JavaScript
PAGE TOP