Как именно работает if (переменная $)?

Возможный дубликат:
Что касается операторов if в PHP

В PHP-скриптах – что делает оператор if, подобный этой проверке?

<?php if($variable){ // code to be executed } ?> 

Я видел, как он использовался в скриптах несколько раз, и теперь я действительно хочу знать, что он «ищет». Ничего не пропало; это просто простая переменная внутри оператора if … Я не мог найти никаких результатов об этом, где бы то ни было, поэтому, очевидно, я буду выглядеть глупо, разместив это.

Solutions Collecting From Web of "Как именно работает 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:

  • сама логическая ЛОЖЬ
  • целое число 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() .

Он проверяет, соответствует ли $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 не запускался)

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

Все остальные значения должны быть истинными. Дополнительная информация в руководстве 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 будет продолжен. В противном случае он будет проигнорирован