Open Source Web Development Tutorials - Dev Shed
NULLと空文字列
(2009/02/06公開)
NULLと空文字列
ある程度のプログラミングの経験者であればだれでも、NULLと空文字列の概念に出くわしたことがおありだろう。NULLと空文字列は同じものではないので、混同してしまうと深刻な問題を引き起こしかねない。この記事ではPHPとMySQLとの関連においてこれらの概念についてご説明しようと思う。
始める前に、ここで少しクイズを出そう。NULLは""と同一のものか?もし「はい」とお答えなら、ぜひともこの記事を読者に読んでいただきたい。""は空文字列のことで、NULLとは異なることをたとえご存じだとしても、この記事は読んでいただいて損はないはずだ。
まずはPHPとの関連においてこの概念をご説明しよう。PHPでのNULLの定義は次のようなものだ:「特別なNULL値はある変数が値を持たないことを表す。NULLはNULL型の唯一の値である」。
注意:NULL型はPHP 4で導入された。
変数は以下の場合にNULLとみなされる。
・定数NULLが代入されている場合。
・まだ値が何も代入されていない場合。
・unset()されている場合。
さらに、NULL 型の値は1つだけで、大文字小文字を区別しないキーワードNULLである。
<?php
$var = NULL;
?>
誤解のせいで問題の原因になりうるケースには次のものが挙げられる:
1.$varが空文字列である。
$var = "" ;
$z = is_null($var) ;
return $z ; // returns false
または
$var = '' ;
$z = is_null($var) ;
return $z ; // returns false
2.$varが空配列である。
$var = array() ;
$z = is_null($var) ;
return $z ; // returns false
NULLが目的通りの働きをするのは下記の場合。
$var = null ; // case is not a problem - NULL, null, Null ..are all same
$z = is_null($var) ;
return $z ; // returns true
// $var is undefined or unset or uninitialized
$z = is_null($var) ;
return $z ; // returns true
ほとんどの場合、$varの内容は”if”のスタイルで表示される。具体的には以下のようなものだ。
if ( $var ) { // returns true when var has value and $var is not equal to zero
echo $var ; // or do some processing
}
このプログラミング方法には問題点がある。つまり、$varの値が0の場合、真が返ってこない。この窮地から逃れるために、ある人はis_null()を使うことがあるが、前述のとおりこれも問題の原因となる。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








