ねむっていr

2011-08-19 (unset)NULLへのキャスト

PHPには不思議な構文がある。NULLにキャストする(unset)という構文だ。

次のようにして使う。

$var = (unset)$somevalue;

こうすることで$varにはNULLが代入される。

からない。次のように記述するのと何が違うのか。

$var = NULL;

マニュアルには変数をunsetするような旨が書いてあったが、実際にはそんなことはなく、値の評価結果がただNULLになるだけだ。

ある値をNULLとして代入したい場合には意味があるかもしれないいが、「NULLとしての値」はそもそもNULLしか存在しないわけで、「ある値」なんか持ち出さなくともNULLをそのまま代入しても全く同じ結果が得られるのだ。

また、(unset)は言語構造であるがゆえに、「値」や「可変関数」のように扱うことができず、ポリモーフィズム的に値をNULLにするような使い方もできない。

使い道はあるのだろうか。

$somevalue = 94404;
$var = 97998;

var_dump($somevalue);
var_dump($var);

$var = (unset)$somevalue;

var_dump($somevalue);
var_dump($var);

/* 結果
int(94404)
int(97998)
int(94404)
NULL
*/