Я не использую php в качестве основного языка серверной части, но иногда мне нравится тестировать некоторые вещи на разных языках, и я видел, что это не сработает. Почему? $ var - это строка, поэтому она существует.
$var = '0';
if ($var) {
echo 'a';
}
Это типичная конструкция интерпретируемых языков ... $var протестирован, чтобы разрешить все, что не является ложью.
Да, но тогда почему «ложь» не ложь?
Прочтите документацию, на которую ссылается @CBroe. Он даже содержит пример, использующий строку "false", оцениваемую как true.
Поскольку 'false' ни то, ни другое, цитируем, «Пустая строка, [или] строка« 0 »»
Под этим вопросом я имел в виду, что не неправильно ли преобразовывать «0» в просто 0? Дело не в том, что я не понимаю, что происходит
@LeoOdishvili Дело не в конвертации '0' в 0. Он просто рассматривает "0" как false.
Проверьте ссылку Syscall. Использование оператора if, как и вы, дает слабое сравнение, поэтому строка 0 обрабатывается как значение 0.
Поэтому, если вы хотите проверить переменную на предмет наличия строки и есть вероятность, что там может быть '0', вы должны проверить, как это было написано в одном из ответов - isset ($ var)






PHP рассматривает '0' как равный 0, который равен false, поэтому ваше утверждение сводится к
if (false) {
echo 'a';
}