Как именно работает if (переменная $)?
Возможный дубликат:
Относительно операторов if в PHP
В PHP-скриптах - что делает оператор if, подобный этой проверке?
<?php if($variable){ // code to be executed } ?>
Я видел, как он использовался в скриптах несколько раз, и теперь я действительно хочу знать, что он "ищет". Он ничего не пропустил; это просто простая переменная внутри оператора if... Я не мог найти никаких результатов об этом в любом месте, поэтому, очевидно, я буду выглядеть глупо, разместив это.
Ответы
Ответ 1
Конструкция 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
.
Ответ 2
Если преобразование $variable
в логическое и действует по результату этого преобразования.
Дополнительную информацию см. в документах boolean.
Чтобы явно преобразовать значение в boolean, используйте (bool) или (boolean) приведения. Однако в большинстве случаев приведение не требуется, поскольку значение будет автоматически преобразовано, если оператор, функция или структура управления требует логического аргумента.
Ответ 3
В следующем списке объясняется, что считается оценкой false
в PHP:
- сама логическая ЛОЖЬ
- целое число 0 (ноль)
- поплавок 0.0 (ноль)
- пустая строка и строка "0"
- массив с нулевыми элементами
- объект с нулевыми переменными-членами (только для PHP 4)
- специальный тип NULL (включая неустановленные переменные)
- Объекты SimpleXML, созданные из пустых тегов
Каждое другое значение считается TRUE (включая любой ресурс).
источник: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting
В вашем вопросе переменная оценивается внутри оператора if()
. Если переменная не установлена, она будет оцениваться в соответствии с приведенным выше списком. Если он установлен или имеет значение, он будет оценивать значение true, поэтому выполняется код внутри ветки if()
.
Ответ 4
Он проверяет, соответствует ли $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...
Ответ 5
Любое из них считается ложным (так что //code to be executed would
не запускается)
- сама логическая ЛОЖЬ
- целое число 0 (ноль)
- поплавок 0.0 (ноль)
- пустая строка и строка "0"
- массив с нулевыми элементами
- объект с нулевыми переменными-членами (только для PHP 4)
- специальный тип NULL (включая неустановленные переменные)
- Объекты SimpleXML, созданные из пустых тегов
Все остальные значения должны быть истинными. Дополнительная информация в Руководство по булевым PHP.
Ответ 6
Попробуйте взглянуть на эту старую расширенную " таблицу прав php", чтобы получить голову вокруг всех различных выбоин, ожидающих разрыва ваших шин. Когда вы начинаете быть настолько явным, насколько можете, с любым оператором сравнения, который развивает ваш код. Попробуйте и протестируйте против вещей идентичных, а не равных.
Ответ 7
Это полностью зависит от типа значения объекта, с которым вы проверяете. В PHP каждый тип объекта имеет определенное значение, которое будет возвращать false, если флажок установлен. Объяснение этого можно найти здесь: http://php.net/manual/en/language.types.boolean.php Некоторые значения, которые оцениваются как false,
float: 0.0
int: 0
boolean: false
string: ''
массив: [] (пустой)
object: объект имеет 0 свойств/пуст
NULL
Его немного отличается от большинства других языков, но как только вы привыкнете к нему, это может быть очень удобно. Вот почему вы можете увидеть множество утверждений, таких как
$result = mysqli_multi_query($query) or die('Could not execute query');
Функция в PHP должна возвращать только тип значения, который вычисляется как false, чтобы что-то подобное работало. Оператор OR в PHP не будет оценивать свой второй аргумент, если первый аргумент является истинным (как независимо от вывода второго аргумента, оператор or будет продолжать выполняться), и строки, подобные этому, будут пытаться вызвать запрос и присвоить результат $result, Если запрос завершается с ошибкой, и функция возвращает ложное значение, тогда поток уничтожается и печатается "Невозможно выполнить запрос".
Ответ 8
если функция успешно выполняется (true) или существует переменная (true) boolean
оператор if будет продолжен. В противном случае он будет проигнорирован