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

时间:2012-10-23 11:58:24

标签: php variables if-statement boolean-expression negation

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

!$var表示什么? var false是空的,没有设置等吗?

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

示例1:

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

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

这个例子有效吗?如果$string为空,if语句是否真的有效?

示例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)语句的使用范围。他们看起来很干净。

感谢。

4 个答案:

答案 0 :(得分:18)

if(! $a)if($a == false)相同。此外,应该考虑使用==运算符时发生类型转换 有关详细信息,请查看“与==的松散比较”部分here。从那里开始,字符串“0”和“”等于FALSE("0"==false为TRUE,""==false也为TRUE。

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

示例2
它会起作用

答案 1 :(得分:2)

!否定。 true变为false,任何评估为false的东西都变为true。

如果您正在编写PHP并且您并不了解所有操作员......在您熟悉它们之前,不应该编写一行代码:

http://php.net/manual/en/language.operators.php

这些是绝对的基础。

答案 2 :(得分:0)

它是一个布尔测试者。空或假。

答案 3 :(得分:0)

这是not布尔运算符,有关详细信息,请参阅the PHP manual