TEDIA会員に登録したメールアドレスとパスワードを入力してください

メールアドレス:

     パスワード:


パスワードを忘れた方はパスワードの確認を行ってください。

TEDIA会員へのご登録がお済みで無い方はこちらで登録ができます


>> テクノロジーポータル TEDIA トップページへ戻る <<

Think IT Software Developer's Think IT Find-IT 失敗しないソフト選び Find-IT TEDIA テクノロジーポータル TEDIA インストールマニアックス2008 インストールマニアックス2008

TEDIA SponsorsOpen 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()を使うことがあるが、前述のとおりこれも問題の原因となる。


1    2    3    4    次のページ

Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.