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

Leonid

PHP? нет, не слышал...
PHP:
$a = 0;
$b = 'Hello';
	
if ($a == $b) echo $a.'='.$b;
выводит 0=Hello
 

Jakiro

Новичок
Потому что PHP - динамично типизированный язык, при сравнении числа и строки, интерпретатор все равно их приведет к 1 какому то типу, и потом только будет их сравнивать, а судя по данной ситуации, php просто пытается привести строку к числу, а в самой строке никаких намеков на числа - нет => 0. Попробуйте перед словом "Hello", поставить какое то число, например так: "52Hello", и тогда условие выполняться не будет. Но если Вам нужно в данном примере исправить положение, используйте оператор тождественного сравнения " === " а не " == ", тогда типы совпадать не будут. и условие не будет выполнено.
 

Welcome

Новичок
Тут пришла мысль, а если поменять местами А и Б при сравнении, то оно не будет выполнено? Индусский код? :)
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Adelf
голимая картинка, в моей ссылке таблица сравнения понятней, нет таких, вводящих в заблуждение вещей как <<-1"
 

Adelf

Administrator
Команда форума
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";
?>
 
Сверху