почему стринг равен нулю?

  • Автор темы Автор темы Leonid
  • Дата начала Дата начала
Потому что PHP - динамично типизированный язык, при сравнении числа и строки, интерпретатор все равно их приведет к 1 какому то типу, и потом только будет их сравнивать, а судя по данной ситуации, php просто пытается привести строку к числу, а в самой строке никаких намеков на числа - нет => 0. Попробуйте перед словом "Hello", поставить какое то число, например так: "52Hello", и тогда условие выполняться не будет. Но если Вам нужно в данном примере исправить положение, используйте оператор тождественного сравнения " === " а не " == ", тогда типы совпадать не будут. и условие не будет выполнено.
 
Тут пришла мысль, а если поменять местами А и Б при сравнении, то оно не будет выполнено? Индусский код? :)
 
Adelf
голимая картинка, в моей ссылке таблица сравнения понятней, нет таких, вводящих в заблуждение вещей как <<-1"
 
c0dex
угу. первая попавшаяся была. убрал.

Какая-то ерунда на форуме этом. Часто самый короткий и четкий ответ идет первым ответом в теме, но его мало замечают, ибо более объемные и менее нужные посты, идущие за ним, захватывают все внимание :)
 
Но все же :)
PHP:
<pre>
<?php 
echo "Hello" ? "YES\n" : "FAIL\n"; 
echo 1 ? "YES\n" : "FAIL\n";
echo 1 === "Hello" ? "YES\n" : "FAIL\n";
echo 1 == "Hello" ? "YES\n" : "EPIC FAIL\n";
?>
 
Сверху