检查是否设置变量 的办法,本节介绍如何检查变量是否已设置,如果已设置,它们的值是什么——这是编程中非常常见的任务。
在检查 PHP 中是否设置了变量时,我们的第一个冲动可能是使用该isset()
函数。虽然这适用于大多数情况,但如果我们查看isset()
函数的定义,我们会看到以下内容:
isset
: 确定变量是否已声明且不是 null。
但是,在 PHP 中我们可以将变量设置为NULL
:
1 2 3 |
<?php $variable = NULL; var_dump(isset($variable)); |
此属性将返回false
– 即使我们已明确将变量设置为NULL
!这是 PHP 中的一个条件,可能会产生一些混乱。在我们继续下面的过程中,我们将研究该isset()
方法以及何时使用它,以及在isset
不起作用时我们可以使用哪些其他方法。
检查是否设置变量 可以使用empty() 和 is_null()
虽然该isset()
方法可以帮助我们确定变量是否已设置了某个值,但如果变量已设置为 ,它就无济于事了NULL
。要处理这种情况,我们需要使用empty()
或is_null()
函数。该empty()
函数将确定变量是否为空。它适用于(即 return true
):
""
(一个空字符串)0
(0 为整数)0.0
(0 作为浮点数)"0"
(0 作为字符串)NULL
FALSE
array()
(一个空数组)$var;
(声明的变量,但没有值)
这意味着我们可以使用它empty()
来确定变量是否为空。在这种情况下,NULL
和false
都被认为是空的:
1 2 3 |
<?php $variable = NULL; var_dump(empty($variable)); |
我们也可以使用该is_null()
功能。此函数将确定变量是否为空。
下面是一个is_null()
用于确定变量是否为 null 的示例:
1 2 3 |
<?php $variable = NULL; var_dump(is_null($variable)); |
在 PHP 中处理变量时最重要的是理解 、 和 之间isset()
的is_null()
区别empty()
。这三个函数可用于确定变量的状态,但它们具有不同的行为。下表可用于突出功能之间的差异。
“” | “foo” | NULL | FALSE | 0 | undefined | |
---|---|---|---|---|---|---|
empty() | True | False | True | True | True | True |
is_null() | False | False | True | False | False | True(error) |
isset() | True | True | False | True | True | True |
我们可以使用单一功能吗?
使用get_defined_vars()
将返回一个关联数组,其中键作为变量名称,值作为变量值。我们这里还是不能用isset(get_defined_vars()['variable'])
,因为key可能存在,value还是null,所以我们只好用array_key_exists('variable', get_defined_vars())
.
例如:
1 2 3 4 5 6 7 |
<?php $variable = null; $isset = array_key_exists('variable', get_defined_vars()); var_dump($isset); // true $isset = array_key_exists('otherVariable', get_defined_vars()); var_dump($isset); // false |
通过get_defined_vars()
以这种方式使用,我们可以 100% 确定我们正在检查变量是否已设置。
结论
在这篇简短的文章中,我们讨论了如何检查一个变量是否已在 PHP 中设置。isset()
我们还研究了 set、empty 和 null 之间的区别,以及使用常用函数、is_null()
和时要牢记的关键注意事项empty()
。因此,下次您需要检查 PHP 变量的状态时,您将拥有所需的所有信息,因此您可以选择正确的方法并消除代码中的所有歧义。