Странный оператор if в php

Я не использую php в качестве основного языка серверной части, но иногда мне нравится тестировать некоторые вещи на разных языках, и я видел, что это не сработает. Почему? $ var - это строка, поэтому она существует.

$var = '0';

if ($var) {
  echo 'a';
}
php.net/manual/en/…
CBroe 17.05.2018 15:39
php.net/manual/en/types.comparisons.php: См. Строку $x = "0";.
Syscall 17.05.2018 15:39

Это типичная конструкция интерпретируемых языков ... $var протестирован, чтобы разрешить все, что не является ложью.

arkascha 17.05.2018 15:39

Да, но тогда почему «ложь» не ложь?

Leo Odishvili 17.05.2018 15:40

Прочтите документацию, на которую ссылается @CBroe. Он даже содержит пример, использующий строку "false", оцениваемую как true.

Some programmer dude 17.05.2018 15:41

Поскольку 'false' ни то, ни другое, цитируем, «Пустая строка, [или] строка« 0 »»

CBroe 17.05.2018 15:41

Под этим вопросом я имел в виду, что не неправильно ли преобразовывать «0» в просто 0? Дело не в том, что я не понимаю, что происходит

Leo Odishvili 17.05.2018 15:43

@LeoOdishvili Дело не в конвертации '0' в 0. Он просто рассматривает "0" как false.

Chin Leung 17.05.2018 15:45

Проверьте ссылку Syscall. Использование оператора if, как и вы, дает слабое сравнение, поэтому строка 0 обрабатывается как значение 0.

aynber 17.05.2018 15:47

Поэтому, если вы хотите проверить переменную на предмет наличия строки и есть вероятность, что там может быть '0', вы должны проверить, как это было написано в одном из ответов - isset ($ var)

Leo Odishvili 17.05.2018 15:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
10
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

PHP рассматривает '0' как равный 0, который равен false, поэтому ваше утверждение сводится к

if (false) {
  echo 'a';
} 

Другие вопросы по теме