若转载教程,请注明出自SW-X框架官方文档
1、isset() 检测变量是否已创建
在PHP中,如果我们想检测一个变量(保存全局变量、超全局变量)是否已经被创建,又或者是不等于null
,我们都可以使用isset()
函数来进行判断。
注意:isset()
函数检测等于null
的变量会返回false
,而检测等于''
的变量则会返回true
。
因为在严格的数据类型中,$A=null
的实际数据类型,并不等于$A=''
语法结构如下:
isset(变量A, 变量B, ...);
注意:isset()
函数支持一次检测一个或多个变量,若所有变量都被创建了,则返回true
,若其中一个变量没被创建,则返回false
。
下面,我们来进行一些案例演示:
<?php
# 下面的结果为true
$var = '';
if (isset($var)) {
echo '通过';
}
# 下面开始只注释返回结果,自己分析过程跟原因
$a = "test";
$b = "anothertest";
var_dump(isset($a)); // true
var_dump(isset($a, $b)); // true
# 删除变量
unset ($a);
var_dump(isset($a)); // false
var_dump(isset($a, $b)); // false
$foo = null;
var_dump(isset($foo)); // false
2、empty() 检测是否为空
在PHP中,如果我们想检测一个变量(保存全局变量、超全局变量)不等于空的情况下,我们可以使用empty()
函数来进行判断。
在empty()
函数所认定为的情况,在PHP中有以下几个场景:
empty()函数所认定为的情况,在PHP中有以下几个场景:
以下的东西被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
null
false
array() (一个空数组)
$var; (一个声明了,但是没有赋值的变量)
下面我们来使用empty()
和isset()
函数进行一个简单的对比:
<?php
$var = 0;
# 变量为0的时候,isset()会返回true
if (isset($var)) {
echo '通过';
}
# empty()则会返回false
if (empty($var) == false) {
echo '未通过';
}
A、isset()与empty()函数的使用场景
当我们需要判断一个变量,是否已被创建的时候,使用isset()
当我们需要判断一个变量,是否为空的时候,使用empty()
、empty()
函数常用于判断$_GET
与$_POST
这类型的超全局变量是否有内容提交,并做对应的内容过滤。
所以在实际开发中,empty()
用的地方要比isset()
函数多很多。
3、is_null() 检测是否为null类型
is_null()
函数是用于判断变量是否等于null
,若等于null
,则返回true
,否则返回false
实际上is_null()
函数与isset()
函数在功能上刚好相反,下面我们来进行一个简单的案例,从案例中发现他们之间的一些不同点:
<?php
# 检测未创建的变量,isset()会返回false,不会报错
if (isset($var)) {
echo '返回false';
}
# is_null()则会报错
if (is_null($var)) {
echo '我报错了';
}
A、is_null()与isset()函数的区别
1、isset()严格上来说是一个PHP语句,和echo是一样的,所以在运行速度上,isset()比is_null()要快2-3倍
2、isset()判断为null会返回false,而is_null()会返回true,刚好相反
3、isset()可以同时传递多个变量进行判断,而is_null()只能传递一个变量
4、isset()在检测未创建的变量时会返回false,而is_null()会报错
小黄牛提醒:在即时开发中,我们就算使用
$A===null
来进行判断,也不要使用is_null($A)
这个函数,因为is_null()
函数的性能并不高,所以有经验的程序员都不会去使用。
4、is_array() 检测是否为数组
在PHP中,我们可以使用is_array()
函数,检测一个变量是否为数组结构。如果是array
,则返回true
,否则返回false
。
使用案例如下:
<?php
$var = array();
if (is_array($var)) {
echo '这是一个数组';
}
免费教程手写不易,希望能支持一下SW-X框架,(^.^)
GitHub有账号的朋友,也可以给我们一个小星星噢!
该群以Swoole生态发展交流为主,若出现争吵,攻击其他人等行为,立即剔除。
