当你在你的脚本中写下这样一行代码
$myvariable; //此处你想定义一个变量,但未赋值。会有Notice: Undefined variable
echo $myvariable + 3; //利用这个变量涌现:Notice: Undefined variable: myvariable in

如果将其改写成:
$myvariable = NULL;
echo $myvariable + 3; //这样就不会有问题了
以是得出在你的脚本在利用一个变量时最好赋一个默认值,如果你不想,就可以将NULL赋给变量,表示这个变量已经定义但没有值,属于NULL类型。
is_null():
bool is_null ( mixed $var ) (php.net官方文档的函数定义)
当参数知足下面三种情形时,is_null()将返回TRUE,其它的情形便是FALSE
1、它被赋值为NULL
2、它还没有赋值
3、它未定义,相称于unset(),将一个变量unset()后,不便是没有定义吗
让我们来看一些例子:
$myvar = NULL;
var_dump(is_null($myvar)); // TRUE
$myvar1;
var_dump(is_null($myvar1)); // TRUE Notice: Undefined variable
$num = 520;
unset($num);
var_dump(is_null($num)); //TRUE Notice: Undefined variable
var_dump(is_null($some_undefined_var)); //TRUE Notice: Undefined variable
$myvar = 0; is_null($myvar); // FALSE
$myvar = FALSE; is_null($myvar); // FALSE
$myvar = ''; is_null($myvar); // FALSE
isset():
bool isset ( mixed $var [, mixed $... ] ),参数是一个变量
检测参数已设定,并且不是NULL。如果没有设置变量,变量未赋值,或变量被设为NULL,isset()函数就返回NULL。
恰好和is_null()函数相反,is_null()为TRUE的情形在isset()中就为FALSE。故意思!
如果通报多个参数,将取交集。即所有参数全部符合 isset() 时才返回 TRUE。
彷佛让人觉得有点困惑,来看一些例子:
$myvar = NULL; isset($myvar); // FALSE 当一个变量被赋值为NULL时,就表示这个变量没有值
$myvar = 0; isset($myvar); // TRUE
$myvar = FALSE; isset($myvar); // TRUE
$myvar = ''; isset($myvar); // TRUE
isset($some_undefined_var); // FALSE Undefined variable
可以看出isset()着重检测一个 变量是否设置和这个变量是否有详细的值,当变量知足这两种情形时isset()返回TRUE
defined():
bool defined ( string $name )
检测是否设置常量
empty():
bool empty ( mixed $var )
判读变量是否为空。
请见上面的类型比较表empty()那一列你就明白哪些情形是空的环境了。还有其他一些函数的参照。
来看一些例子:
$myvar = NULL; empty($myvar); // TRUE
$myvar = 0; empty($myvar); // TRUE
$myvar = FALSE; empty($myvar); // TRUE
$myvar = ''; empty($myvar); // TRUE
empty($some_undefined_var); // TRUE
empty()为TRUE的情形,若变量不存在,或者变量存在且其值为\"大众\"大众、0、\公众0\"大众、NULL、FALSE、array()、var $var; 以及没有任何属性的工具,则返回 TURE。
一样平常如!empty()的判断,便是变量存在,且值不为\"大众\"大众、0、\"大众0\公众、NULL、FALSE、array()以及只是纯挚定义一个变量$var。
有技能方面的见地欢迎留言磋商