gpt4 book ai didi

PHP: 为空($var) 等同于!$var

转载 作者:可可西里 更新时间:2023-11-01 12:48:25 24 4
gpt4 key购买 nike

为了验证我们可以做的变量值

if(empty($var)){
}

这将在空字符串上返回 true,0 作为数字,false,null

if(!$var){
}

这两种方法有什么区别,它们是等价的吗?

编辑:一些他们表现不同的例子会更实用。

EDIT2:根据答案得出的唯一区别是如果 $var 未定义,第二个将发出通知。他们返回的 bool 值呢?

EDIT3:对于 $var 我的意思是任何具有任何值的变量,甚至是 undefined variable 。

用户回答的结论:if(!$var)empty($var) 是等效的,如此处所述 http://php.net/manual/en/types.comparisons.php ,它们将在同一个变量上返回相同的 bool 值。

if(!$var) 如果未定义 $var 将返回一个 php 通知,通常情况并非如此(如果我们编写好的代码)大多数 IDE会强调它。

  • 检查简单变量时 if(!$var) 应该没问题
  • 检查数组索引($var['key'])或对象属性($var->key)时empty($var['key']) 使用 empty 效果更好。

最佳答案

the problem is that since !$vars is shorter than empty($vars) many of us will prefer the first way

您更喜欢第一个,因为它“更短”?
更短的代码并不意味着更好的代码或更快的脚本;)

PHP 函数及其各种其他行为的速度不是由函数名的长度决定的。它由 PHP 实际执行的评估、操作和返回结果决定。

除此之外,不要根据代码长度选择方法,而是根据场景和“针对给定场景”的最佳方法选择方法。
哪个最好取决于您的需要,除了您提到的两个之外还有其他变量检查(isset() 为一个)。

but the problem is are they equivalent always

不一定 - 看 http://php.net/manual/en/types.comparisons.php

或者创建一个快速测试脚本来查看 PHP 为您的两个场景返回了什么。

您也可以在您的框架(或者,可能是独立脚本)中初始化您的变量,这意味着场景会发生变化,您的问题和您使用的方法也会发生变化。

关于哪个是最好的,这完全取决于上下文。

至于要求的答案。

无论如何,为了回答您的问题,这里有一些测试:

(!$vars)

示例代码:

if ( !$vars )
{
echo "TRUE";
}
else
{
echo "FALSE";
}

将返回:
注意: undefined variable :X 行/whatever/中的 vars

但是,如果您首先在脚本中的某处初始化 var:

$vars = "";
$vars = NULL;
$vars = 0;

以上任何一个都将返回:
[没有 PHP 通知]

$vars = "anything";

将返回:
假的

这是因为您使用感叹号测试 var 是否为 FALSE,因此当未使用字符串初始化时,测试脚本返回 TRUE,因为它不是 FALSE。

当我们用字符串初始化它时,var NOT being FALSE 就是 FALSE。

空($vars)

示例代码:

if ( empty($vars) )
{
echo "TRUE";
}
else
{
echo "FALSE";
}

根本没有初始化/设置,以及以下所有内容:

$vars = "";
$vars = NULL;
$vars = 0;

将返回:

没有关于使用空的 PHP 通知,所以在这里我们展示了两个选项之间的区别(还记得我说过最短的代码不一定是“最好的”吗?取决于场景等)。

和之前的测试一样:

$vars = "anything";

返回:
假的

这与 ( !$var ) 相同,您正在测试 IF EMPTY,并且根本没有初始化 var,或者使用任何 "empty() "值:例如 (""),或 NULL,或零 (0),然后测试 var 是否为空为 TRUE,因此我们得到 TRUE 输出。

将 var 设置为字符串时会得到 FALSE,因为 IS EMPTY = FALSE 因为我们将其设置为某物。


区别在于 empty() 不会在未定义 var 时抛出 PHP 通知,而 (!$var) 会。

此外,您可能更喜欢它是“更短的代码”,但是 if (!$var) 实际上并不比广泛使用的 if (empty( $var)).

但同样,这取决于场景 - PHP 提供了不同的选项以满足不同的需求。

关于PHP: 为空($var) 等同于!$var,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27166812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com