Возможный дубликат:
Что касается операторов if в PHP
В PHP-скриптах – что делает оператор if, подобный этой проверке?
<?php if($variable){ // code to be executed } ?>
Я видел, как он использовался в скриптах несколько раз, и теперь я действительно хочу знать, что он «ищет». Ничего не пропало; это просто простая переменная внутри оператора if … Я не мог найти никаких результатов об этом, где бы то ни было, поэтому, очевидно, я буду выглядеть глупо, разместив это.
Конструкция if ($variable)
проверяет, оценивает ли $variable
какое-либо «истинное» значение. Это может быть логическое значение TRUE
или непустое значение, отличное от NULL, или ненулевое число. Посмотрите на список булевых оценок в документах PHP.
Из документации PHP:
var_dump((bool) ""); // bool(false) var_dump((bool) 1); // bool(true) var_dump((bool) -2); // bool(true) var_dump((bool) "foo"); // bool(true) var_dump((bool) 2.3e5); // bool(true) var_dump((bool) array(12)); // bool(true) var_dump((bool) array()); // bool(false) var_dump((bool) "false"); // bool(true)
Обратите внимание, что if ($variable)
не подходит для использования при тестировании, если инициализирован ключ переменной или массива. Если ключ переменной или массив еще не существует, это приведет к E_NOTICE Undefined variable $variable
.
Если преобразует $variable
в логическое и действует по результату этого преобразования.
Дополнительную информацию см. В булевых документах.
Чтобы явно преобразовать значение в boolean, используйте (bool) или (boolean) cast. Однако в большинстве случаев приведение не требуется , так как значение будет автоматически преобразовано, если для оператора , функции или структуры управления требуется логический аргумент.
В следующем списке объясняется, что считается оценкой false
в PHP:
Каждое другое значение считается TRUE (включая любой ресурс).
источник: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
В вашем вопросе переменная оценивается внутри оператора if()
. Если переменная не установлена, она будет оцениваться в соответствии с приведенным выше списком. Если он установлен или имеет значение, он будет оценивать значение true, поэтому выполняет код внутри ветки if()
.
Он проверяет, соответствует ли $variable
true
. Есть пара нормальных значений, которые оцениваются как true
, см. Таблицы сравнения типов PHP .
if ( )
может содержать любое выражение, которое в конечном счете оценивает значение true
или false
.
if (true) // very direct if (true == true) // true == true evaluates to true if (true || true && true) // boils down to true $foo = true; if ($foo) // direct true if ($foo == true) // you get the idea...
Любое из них считается ложным (чтобы //code to be executed would
не запускался)
Все остальные значения должны быть истинными. Дополнительная информация в руководстве PHP Booleans .
Попытайтесь взглянуть на эту старую расширенную « таблицу прав на php », чтобы получить голову вокруг всех различных выбоин, ожидающих разрыва ваших шин. Когда вы начинаете быть настолько явным, насколько можете, с любым оператором сравнения, который развивает ваш код. Попытайтесь проверить, что вещи идентичны, а не равны.
Он полностью зависит от типа значения объекта, с которым вы проверяете. В PHP каждый тип объекта имеет определенное значение, которое будет возвращать false, если флажок установлен. Объяснение этого можно найти здесь: http://php.net/manual/en/language.types.boolean.php Некоторые значения, которые вычисляются как false,
float: 0.0
int: 0
boolean: false
string: ''
array: [] (пусто)
object: объект имеет 0 свойств / пуст
НОЛЬ
Его немного отличается от большинства других языков, но как только вы привыкнете к нему, это может быть очень удобно. Вот почему вы можете видеть множество заявлений, таких как
$result = mysqli_multi_query($query) or die('Could not execute query');
Функция в PHP должна только возвращать тип значения, который оценивается как false, для чего-то вроде этого. Оператор OR в PHP не будет оценивать свой второй аргумент, если первый аргумент истинен (как независимо от вывода второго аргумента, оператор or все равно пройдет), и строки, подобные этому, попытаются вызвать запрос и присвоить результат $ result , Если запрос завершается с ошибкой, и функция возвращает ложное значение, тогда поток уничтожается и печатается «Невозможно выполнить запрос».
если функция успешно выполняется (true) или переменная существует (true) boolean
оператор if будет продолжен. В противном случае он будет проигнорирован