变量前面的感叹号 - 需要澄清

我已经使用PHP很长一段时间了,但这对我来说一直是一个谜,在变量前面正确使用感叹号(负号)。

这说明什么?var 是空的、未设置的等吗?!$varfalse

以下是我需要学习的一些示例...

示例 1:

$string = 'hello';
$hello = (!empty($string)) ? $string : '';

if (!$hello)
{
    die('Variable hello is empty');
}

此示例是否有效?如果为空,if 语句真的有效吗?$string

示例 2:

$int = 5;
$count = (!empty($int)) ? $int : 0;

// Note the positive check here
if ($count)
{
   die('Variable count was not empty');
}

这个例子有效吗?

我从不使用上述任何示例,而是将这些限制为仅具有布尔值的变量。我只需要知道这些例子是否有效,这样我就可以扩大这些语句的使用范围。他们看起来很干净。if ($var)if ($var)

谢谢。


答案 1

if(! $a)与 相同。此外,还应该考虑到使用运算符时会发生类型转换。
有关更多详细信息,请查看此处的“与 ==的松散比较”部分。从那里可以看出,对于字符串“0”和“”等于FALSE(是TRUE并且也是TRUE)。if($a == false)=="0"==false""==false

关于发布的示例:
示例1
它将起作用,但您应该注意,“0”和“”都是“空”字符串。

示例 2
它将起作用


答案 2

这是一个布尔测试器。空或假。


推荐