PHPのissetにひそむ罠?


PHPを使っている人ならしっているであろう、issetという関数。
読んで字のごとく、変数がセットされているかどうかを確認する関数です。
・・・と、つい最近まで信じていました。
たとえば、以下のような時

$data = aray(
          'a' => 'hoge',
          'b' => NULL
          );
print (isset($data['a'])) ? "a:TRUE" : "a:FALSE";
print (isset($data['b'])) ? "b:TRUE" : "b:FALSE";
print (isset($data['c'])) ? "c:TRUE" : "c:FALSE";

「a:TRUE」「b:TRUE」「c:FALSE」

となると思っていたのですが、実際は

「a:TRUE」「b:FALSE」「c:FALSE」

となります。
そんな馬鹿なと思って公式を確認してみると、

「変数がセットされており、それが NULL でないことを調べます。

と、しっかり書いてあります。
気づいた瞬間、「マジですか。。。」と、ちょっと口がポカーンとなりました。
多分そこを勘違いしている人はかなり多いと思うので、もし知らなかったという人は注意が必要です。

この記事の続き?を書きました。
PHPのissetとarray_key_exists

Tag

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です