Что делать, если (!$ 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(!$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
!$ переменная является логическим оператором "Не" http://uk3.php.net/manual/en/language.operators.logical.php
он принимает логическое значение и переворачивает его. Истина становится ложью, а ложь становится истиной.
Я однажды встречал следующий код
if (!$this->error) {
return false;
} else {
return true;
}
Я подумал: "Если ошибок нет, почему ложь? Это неправильно!" Потому что я подумал "!" оператор равен "НЕ". И поменял возврат. Но каждый раз запускались коды ошибок. Потом узнал. "!" Оператор преобразует переменные в логические. Пустые переменные конвертируются в "ложные". И "если" утверждения с "!" оператор запускается так: "если это логическое значение false, вернуть false, иначе вернуть true.!:)