Что делать, если (!$ Variablename) в PHP?

Я знаю это != "не равно", но что это значит, когда у вас есть это:

if(!$something)

Мое первое предположение - это что-то, связанное с исключениями, но осмотр Google не дал ничего.

Так, что это делает?

11 ответов

Решение

Все, что находится в переменной, преобразуется в логическое значение (сама переменная, конечно, остается неизменной), а затем операция NOT (!) делается на полученном логическом. Преобразование произойдет, потому что ! является логическим оператором и работает только с логическими значениями.

При преобразовании в логическое значение следующие значения считаются ЛОЖНЫМИ:

  • само логическое ЛОЖЬ
  • целое число 0 (ноль)
  • Поплавок 0.0 (ноль)
  • пустая строка и строка "0"
  • массив с нулевыми элементами
  • объект с нулевыми переменными-членами (только PHP 4)
  • специальный тип NULL (включая неустановленные переменные)
  • SimpleXML объекты, созданные из пустых тегов

Совет: если переменная не должна быть булевой, вы можете использовать что-то более конкретное, например isset($variable), empty($variable), $variable === ''и т. д. в зависимости от того, что вы хотите проверить. Проверьте руководство для деталей.

Это так же, как:

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

Смотрите: http://www.php.net/manual/en/control-structures.if.php

if (!$something) {

равнозначен

if ($something == false) {

Проверяет, является ли $ что-то ложным.

if(!$variable) такой же как if($variable == false) поэтому он проверяет, является ли переменная $ false
Посмотрите на ответ @bažmegakapa, чтобы увидеть, какие значения считаются ложными.

Это просто означает "Если не что-то".

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() функция!:)

Надеюсь это поможет!:)

Это проверить, если !$something является ложным, или вы можете понимать это как (если не $ что-то), то {// это будет выполнено}, и если $ что-то присутствует, то это не будет входить в if

Проверяет, если $something ложно

!$ переменная является логическим оператором "Не" http://uk3.php.net/manual/en/language.operators.logical.php

он принимает логическое значение и переворачивает его. Истина становится ложью, а ложь становится истиной.

Я однажды встречал следующий код

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

Я подумал: "Если ошибок нет, почему ложь? Это неправильно!" Потому что я подумал "!" оператор равен "НЕ". И поменял возврат. Но каждый раз запускались коды ошибок. Потом узнал. "!" Оператор преобразует переменные в логические. Пустые переменные конвертируются в "ложные". И "если" утверждения с "!" оператор запускается так: "если это логическое значение false, вернуть false, иначе вернуть true.!:)

if($somethin == ""){
}

Or

if($somethin != ""){
}
Другие вопросы по тегам