Ian Lewis
Ian Lewis is a web developer living in Tokyo Japan. His current interests are in Django, python, alternative databases and rapid web application development. About Me...
  • PHPの empty値の話

    社内チャットで、PHPの NULL、"0"、FALSE、array(), ""の扱い方について、話があった。PHP爆発しろという結論が相変わらず出てきた。

    [14:25:02] key: 互換性維持のため
    [14:25:18] key: 空の比較ならempty使うべし、と思った。<マニュアル読んだ感想文
    [14:25:30] key: http://jp.php.net/empty
    [14:25:37] key: 次のような値は空であると考えられます。:
    
    "" (空文字列)
    0 (0 は整数)
    "0" (0は文字列)
    NULL
    FALSE
    array() (空の配列)
    var $var;(変数が宣言されているが、クラスの中で値が設定されていない)
    [14:27:51] key: アタマが痛くなりそうなbad know howすぎる
    [14:27:52] tokibito: え
    [14:28:17] tokibito: "0"
    [14:28:21] tokibito: trueになんの
    [14:29:27] key: php -r 'var_dump("0" == true);'
    [14:29:30] key: bool(false)
    [14:29:34] key: ならない
    [14:29:39] tokibito: <?php
    $i = "0";
    var_dump(empty($i));
    ?>
    [14:29:40] Ian Lewis: それは仕様なんですよ。
    [14:29:47] tokibito: true
    [14:30:02] Ian Lewis: "0" == false == ""
    [14:30:06] Ian Lewis: なんだけど、
    [14:30:13] Ian Lewis: "0" != ""
    [14:30:21] Ian Lewis: そうなんですよ!
    [14:30:25] key: キモイ!
    [14:31:13] Ian Lewis: transitiveじゃない
    [14:31:31] Ian Lewis: "0" == false == "" == ??? ??????爆発
    

    実は、javascriptと同じく、 === を使わなくちゃだめなんですけど、値を直接に if 文に入れると != trueみたいな一貫性が全然ない処理を行ってしまって、結構バグが出やすい現象だね。

    Send feedback このエントリーを含むはてなブックマーク はてなブックマーク - PHPの empty値の話