Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 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 будет продолжен. В противном случае он будет проигнорирован