2023-09-04

比较PHP的isset()、empty()和is_null()函数


比较PHP的isset()、empty()和is_null()函数

您将在几乎每个使用 PHP 编写的程序中使用变量。大多数时候这些变量都有一个值,我们通常用一个初始值来创建它们。但是,您使用的某些变量始终有可能未初始化。这可能会导致 PHP 发出有关使用未定义变量的警告。

未定义变量的原因可能有很多。最常见的问题是您实际上没有定义该变量,或者在其他地方重用它时犯了拼写错误。这只是一个编程错误。然而,另一种可能导致未定义变量的可能性是它是有条件定义的。

您还可能会发现变量的值为 NULL。发生这种情况的原因有多种。例如,变量可能只是尚未用值初始化。或者函数可能会返回空值来表示某种错误。

无论如何,在定义变量之前或当变量具有空值时使用变量可能会产生意想不到的后果。在本教程中,我将向您展示如何检查元素是否已定义并查看它是否为空或 null。

您可以使用 isset()empty()is_null() 来检查其中一个或所有条件是否为真或假。

定义

让我们开始一些定义。

  1. isset():您可以使用 isset() 来确定变量是否已声明并且与 null 不同。
  2. empty():用于判断变量是否存在且变量的值不等于 false
  3. is_null():该函数用于检查变量是否为 null

PHP isset()empty()

正如我们从定义中看到的,如果我们之前定义了该变量并将其值设置为 NULL 以外的值,则 isset() 将返回 true。这可以包括 0、空字符串或 false。另一方面,每当变量值设置为计算结果为 false 时,empty() 将返回 true — 我们称这些为“假”值。 falsey 值的示例包括 0、空字符串 "" 和字符串 "0"、空数组、NULL,或者当然是布尔值 false

isset()empty() 之间的一个相似之处是它们都是语言结构,因此不能使用变量函数进行调用。

下面的代码片段应该解释这两者之间的区别。

<?php

$fruit = '';

if(isset($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// Output:  Do you like ?

if(!empty($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// No Output

?>
登录后复制

请注意,empty() 可以使用 isset() 函数编写:

<?php

function my_empty($x) {
  return !isset($x) || $x == false
}

?>
登录后复制

当然,通常使用内置的 empty() 函数会更容易。

PHP isset()is_null()

如果变量的值已显式设置为 NULL,则 is_null() 函数将返回 true。否则,它只是返回 false。另一方面,只要定义了变量并且其值不为 NULLisset() 就会返回 true

这是一个基本示例来显示它们之间的差异。

<?php

$fruit = NULL;

if(isset($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// No Output

if(is_null($fruit)) {
    echo 'There is no fruit.';
}
// Output: There is no fruit.

?>
登录后复制

PHP empty()is_null()

如果变量的值计算结果为 false,则 empty() 函数将返回 true。这可能意味着空字符串、NULL、整数 0 或没有元素的数组。另一方面,仅当变量的值为 NULL 时,is_null() 才会返回 true

这是一个基本示例来显示它们之间的差异。

<?php

$person = ['first_name' => 'Monty', 'last_name' => '', 'age' => '83', 'fav_movie' => NULL];

if(empty($person['last_name'])) {
    if(is_null($person['last_name'])) {
        echo 'The last name is set to NULL.';
    } else {
        echo 'The last name is probably an empty string.';
    }
}
// Output: The last name is probably an empty string.

if(is_null($person['fav_movie'])) {
    echo $person['first_name'].' did not specify a favorite movie.';
}
// Output: Monty did not specify a favorite movie.
登录后复制

要记住的重要要点

您可以使用两个技巧来编写更简洁的代码并避免将来出现错误。

1.与 empty()is_null() 不同,您可以一次向 isset() 传递多个值,以同时检查其中是否有任何未定义或设置为 NULL。在这种情况下,如果传递的值都不是 NULL,则 isset() 将仅返回 true

2.不要使用 == 来检查值是否为 NULL。这将为错误值(例如计算为 false 的空字符串)提供误报。

最终想法

本教程快速解释了 isset()empty()is_null() 之间的区别。希望您现在能够确定其中哪一个最适合您在代码中使用。

以上就是比较PHP的isset()、empty()和is_null()函数的详细内容,更多请关注php中文网其它相关文章!

https://www.php.cn/faq/601990.html

发表回复

Your email address will not be published. Required fields are marked *