如果(!$variablename)在PHP中做什么


What does if (!$variablename) do in PHP?

我知道!="不相等",但是当你有这个时,这意味着什么:

if(!$something)

我的第一个猜测与异常有关,但环顾谷歌并没有返回任何内容。

那么这是做什么的呢?

变量中的任何内容都被转换为布尔值(变量本身当然保持不变),然后对生成的布尔值执行 NOT 操作(!)。转换会发生,因为!是逻辑运算符,并且仅适用于布尔值。

转换为布尔值时,以下值被视为 FALSE:

  • 布尔值 FALSE 本身
  • 整数 0(零)
  • 浮点数 0.0(零)
  • 空字符串和字符串"0"
  • 包含零元素的数组
  • 成员变量为零的对象(仅限 PHP 4)
  • 特殊类型 NULL(包括未设置的变量)
  • 从空标记创建的简单 XML 对象

提示:如果变量不是布尔值,则可能需要使用更具体的内容,例如isset($variable)empty($variable)$variable === ''等,具体取决于要检查的内容。有关详细信息,请查看手册。

它与:

if((bool)$something != true) {

请参阅:http://www.php.net/manual/en/control-structures.if.php

if (!$something) {

if ($something == false) {

检查$something是否是假的。

它只是意味着"如果不是某事"。

if (!false) {
   this_happens_because_not_false_is_true();
}

它将变量转换为变量的等效boolean。这可以在少数情况下给出:

<?php
    // Case 1: $variable is boolean
    $variable = true;
    $variable = !$variable; // Changes to false;
    var_dump($variable); // bool(false)
    // Case 2a: $variable is a positive integer
    $variable = 5;
    $variable = !$variable; // Changes to false;
    var_dump($variable); // bool(false)
    // Case 2b: $variable is an integer other than 0
    $variable = 0;
    $variable = !$variable; // Changes to false;
    var_dump($variable); // bool(true)
    // Case 2c: $variable is a negative integer
    $variable = -5;
    $variable = !$variable; // Changes to false;
    var_dump($variable); // bool(false)
    // Case 3a: $variable is string
    $variable = "Hello";
    $variable = !$variable; // Changes to false;
    var_dump($variable); // bool(false)
    // Case 3b: $variable is empty string
    $variable = "";
    $variable = !$variable; // Changes to false;
    var_dump($variable); // bool(true)
?>

简而言之,它与empty()功能相反! :)

希望这有帮助! :)

if(!$variable)if($variable == false) 相同,因此它会检查$variable是否为 false
查看@bažmegakapa答案,看看哪些值被认为是错误的。

它会检查!$something是否为假,或者您可以像(如果不是$something)那样理解它,那么{//这将执行},如果存在$something则不会输入if

!$variable 是 'Not' 逻辑运算符http://uk3.php.net/manual/en/language.operators.logical.php

采用布尔值并翻转它。真变成假,假变成真。

检查$something是否为假。

我曾经遇到过以下代码

 if (!$this->error) {
      return false;
    } else {
    return true;
    }   

我想"如果没有错误,为什么是假的?这是不对的!"因为我认为"!"运算符等于"NOT"。和互换回报。但每次错误条件代码都会运行。然后学会了。"!" 运算符将变量转换为布尔值。空变量转换为"false"。带有 "!" 运算符的 "if" 语句运行的方式是这样的 "如果这个布尔值为 false,则返回 false,否则返回 true。!:)

if($somethin == ""){
}
Or
if($somethin != ""){
}