检查变量是否为空

问题描述 投票:0回答:12
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
    ?
php if-statement null
12个回答
99
投票

如果你想测试一个变量是否真的

NULL
,请使用恒等运算符:

$user_id === NULL  // FALSE == NULL is true, FALSE === NULL is false
is_null($user_id)

如果要检查变量是否未设置:

!isset($user_id)

或者,如果变量未设置或具有“空”值(空字符串、零等,请参阅此页了解完整列表):

empty($user_id)

如果要测试现有变量是否包含空字符串,则将其与空字符串进行比较:

$user_id === ''

如果您想测试现有变量是否包含被视为“非空”的值(非空字符串或数组、非零数字等..),

!
就足够了:

!$user_id

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 将无效。


2
投票

这里我已经解释了空函数和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
投票

请定义“空”的含义。

我通常使用的测试是

isset()


0
投票

您可以使用 isset() 例程。

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

is_string(), is_float(),is_int()等进一步具体测试


0
投票

1.

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

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

3.将所有值放入数组中,例如 $ar["user_id"] 等


0
投票
<?php

$nothing = NULL;
$something = '';
$array = array(1,2,3);

// Create a function that checks if a variable is set or empty, and display "$variable_name is SET|EMPTY"
function  check($var) {
    if (isset($var)) {
        echo 'Variable is SET'. PHP_EOL;
  } elseif (empty($var)) { 
        echo 'Variable is empty' . PHP_EOL;

   } 

} 

check($nothing);
check($something);
check($array);

0
投票

值得注意的是,我在进行了近 9 年的 PHP 编码后才发现,检查任何变量是否存在的最佳方法是使用 empty() 函数。这是因为它不会生成错误,即使您将其关闭 - PHP 仍然会生成错误!然而,如果变量不存在,empty() 不会返回错误。所以我相信正确的答案不是检查它是否为空而是执行以下操作

if (!empty($var) && is_null($var))

注意 PHP 手册

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

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


0
投票

由于其他回复,我觉得有必要回答这个问题。如果可以的话使用empty(),因为它涵盖了更多的基础。未来你会感谢我的。

例如,您必须执行诸如isset() && strlen() 之类的操作,而您可以使用empty()。想像一下这个空就像 !isset($var) || $var==假


0
投票

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

如果为空($变量) 然后 ....

© www.soinside.com 2019 - 2024. All rights reserved.