関数はisset()
、変数が設定されていて NULL でないかどうかを判断します。
で設定を解除した変数は、設定unset()
されなくなります。isset()
NULL に設定された変数をテストすると、FALSE が返されます。("\0")
また、NULL バイトは PHP の NULL 定数と同等ではないことに注意してください。
複数のパラメータが指定されているisset()
場合、すべてのパラメータが設定されている場合にのみ TRUE を返します。評価は左から右に進み、設定されていない変数が検出されるとすぐに停止します。
スクリプトを使用しないisset()
と警告が生成されisset()
ますが、これを防ぐことができます。
たとえば、使用する理由isset()
は、キーが配列内にあるかどうかを検出することです。
例えば:
<?php
$a = array ('test' => 1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE
// The key 'hello' equals NULL so is considered unset
// If you want to check for NULL key values then try:
var_dump(array_key_exists('hello', $a)); // TRUE
// Checking deeper array values
var_dump(isset($a['pie']['a'])); // TRUE
var_dump(isset($a['pie']['b'])); // FALSE
var_dump(isset($a['cake']['a']['b'])); // FALSE
if(!$a['hello']){ //this will display a warning: Undefined variable.
echo 'hello is not set in the array';
}
?>
!
あなたの例の問題は、PHPの演算子が であることですNOT
。そのため、2 つの if 行では同じ結果が得られますが、最初の行には変数がないため未定義の変数の警告が表示され$name
、2 番目の if は変数に対して行わNOT
れます$name
<?php
if(!$name){//this will display a warning: Undefined variable.
echo 'Name is not set';
}
$name=0;
if(!$name){//check the not value of $name.
echo 'Name is true';
}
?>