检查变量是否为空

41
if ($user_id == NULL || $user_name == NULL || $user_logged == NULL) {
    $user_id = '-1';
    $user_name = NULL;
    $user_logged = NULL;
}
if ($user_admin == NULL) {
    $user_admin = NULL;
}
  1. 有没有更短的方法来做这件事情?
  2. 如果我没错,应该用 is_null 进行测试吗?
  3. 是否可以将 $user_id$user_name$user_logged 写在一行中(可能是数组),而不需要重复写 NULL

请问有没有更好的方法来检查变量是否为null或空字符串? - user745235
我觉得你可以为此创建一个函数... - user745235
12个回答

98
如果你想测试一个变量是否真正为NULL,使用恒等运算符:
$user_id === NULL  // FALSE == NULL is true, FALSE === NULL is false
is_null($user_id)

如果你想检查一个变量是否未设置:
!isset($user_id)

或者,如果变量未设置或具有“空”值(空字符串、零等),请参阅此页面以获取完整列表。
empty($user_id)

如果你想测试一个已存在的变量是否包含一个被认为是“非空”的值(非空字符串或数组,非零数字等),那么使用!即可满足需求:
!$user_id

1
请注意,isset() 函数接受无限数量的参数。 - DaveRandom
还要注意的是,因为他在上面使用的是==而不是===,所以实际上所做的只是if(!$var || !$var ... - DaveRandom
2
是的,文档在:issetis_nullempty。根据代码判断,我认为变量必须是一个字符串。因此,我建议使用: **if (!is_string($user_id) || $user_id === '')**。 - Rob W

10

你可以通过多种方式检查它是否未设置(或为空)。

if (!$var){ }
或者:
if ($var === null){ } // This checks if the variable, by type, IS null.

或者:

if (empty($var)){ }

你可以使用以下代码检查它是否已声明:

if (!isset($var)){ }

请注意,PHP将0(整数),""(空字符串)和false解释为"空" - 尽管它们是不同的类型,但这些特定值被PHP视为相同。无论$var是否设置/声明为$var = 0或$var = "",都没有关系。因此,通常使用===运算符进行比较,该运算符考虑数据类型。如果$var是0(整数),$var == ""或$var == false将验证通过,但$var === ""或$var === false将不会。


1
!isset($var) 检查变量是否未定义,而不是它是否为空。 - noob

2

在这里,我解释了空函数(empty)和isset函数的工作原理,请使用适合的函数。同时,您也可以使用is_null函数。

<?php
    $val = 0;
    //evaluates to true because $var is empty
    if (empty($val)) {
        echo '$val is either 0, empty, or not set at all';
    }
    //evaluates to true because $VAR IS SET
    if (isset($val)) {
        echo '$val is set even though it is empty';
    }
    ?>

1

empty() 是一个更短的选择,作为检查 !$user_id 的替代方法,这是在其他地方建议的:

if (empty($user_id) || empty($user_name) || empty($user_logged)) {
}

1
为了检查空值,您可以使用如下所示的is_null()
if (is_null($value)) {
   $value = "MY TEXT"; //define to suit
}

0
值得注意的是 - 我在近乎9年的PHP编程中才发现最好的检查变量是否存在的方法是使用empty()函数。这是因为它不会生成错误,即使您关闭了错误 - PHP仍会生成错误!但是如果变量不存在,empty()不会返回错误。因此,我认为正确的答案不是检查它是否为空,而是执行以下操作。
if (!empty($var) && is_null($var))

请注意 PHP 手册

如果变量不存在或其值等于 FALSE,则被视为空。

与 null 不同,它在这里很方便!


值得注意的是,if (!empty($var) && is_null($var)) 永远不会被评估为 true,因为 null 永远不会满足 !empty() - mickmackusa

0

1.

if(!($user_id || $user_name || $user_logged)){
    //do your stuff
}

2. 不,我实际上并不明白你为什么要写这样的结构。

3. 把所有值都放进数组里面,例如 $ar["user_id"] 等等。


0
请定义您所说的"empty"是什么意思。
我通常使用的测试是isset()

因此,我的第一行代码是“empty”,这个词有点含糊不清。 - Alnitak

0

您可以使用isset()例程。

此外,您还可以参考一系列is_type()函数,例如

is_string(),is_float(),is_int()等,以进一步进行特定测试。


0

在PHP中检查变量是否为空的最佳和最简单的方法就是使用empty()函数。

如果 empty($variable) 那么 ....


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接