web-dev-qa-db-ja.com

PHPで変数をNULLにリセットする方法は?

isset($var)を使用して、変数が定義されていないかnullかどうかを確認できます。 (例:セッション変数が以前に設定されているかどうかの確認)

しかし、変数を設定した後、isset($var)falseを返すように変数をデフォルトにリセットするにはどうすればよいですか?

23
Robinicks

unset($var);を使用します

42
nacmartin

Nacmartinが言ったように、unsetは変数を「未定義」にします。変数をnullに設定することもできますが、これが2つのアプローチの違いです。

$x = 3; $y = 4;
isset($x);  // true;
isset($y);  // true;

$x = null;
unset($y);
isset($x);  // false
isset($y);  // false

echo $x;  // null
echo $y;  // PHP Notice (y not defined)
21
nickf

詳細説明:

変数はnullまたはnullでない可能性がありますが、変数は設定されている、または設定されていないとも言えます。

変数をnullに設定するには、単に

$var = null;

これにより、$varnullとなり、false0などと同等になります。変数はまだ定義/設定されているため、$GLOBALS['var']から変数を取得できます。ただし、グローバルおよび/またはローカルの名前空間から変数を削除するには、

unset($var);

これにより、$varがまったく設定されなくなります。 $GLOBALSでは見つかりません。

17
mauris

また、変数をnullに設定できます。

<?php

$v= 'string';
var_dump(isset($v));
$v= null;
var_dump(isset($v));

?>
1
leepowers

PHP 7.2以降、変数の直接設定は廃止されました。この方法では使用しないでください。代わりにunsetの使用を検討してください。 https://www.php.net/manual/en/language.types.null.php

unset($v);は、変数がnullまたは未設定かどうかを確認するときに同じfalseになります。

isset($v) === false 
is_null($v) === false 
0
Gregory Neely