17

我已经使用 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

4 回答 4

23

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

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

示例 2
它将起作用

于 2012-10-23T12:09:32.953 回答
2

!否定者。true 变为 false,任何评估为 false 的内容都变为 true。

如果您正在编写 PHP 并且您不熟悉所有的运算符.. 在您熟悉它们之前,您不应该编写任何一行代码:

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

这些是绝对的基础。

于 2012-10-23T12:02:12.470 回答
0

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

于 2012-10-23T12:00:04.963 回答
0

它是not布尔运算符,有关详细信息,请参阅PHP 手册

于 2012-10-23T12:01:41.177 回答