Приведение типов и сравнение. Баг?

alekciy

Новичок
Приведение типов и сравнение. Баг?

ОС : WindowsXP, FreeBSD 6.2
Веб сервер : Apache 2.2
PHP : 5.2

Хотел уточнить такой вопрос. Всегда думал, что такой вот код:
PHP:
<?php
$k = 0;
//$k = (string) $k;
$v = ($k == 'text_field') ? 'TRUE' : 'FALSE' ;
var_dump($v);
?>
Вернет FALSE, но он возращает TRUE. Разве PHP перед стравнением не должен произвести приведение типов и потом уже сравнивать? Если делать приведение до сравнения, то получаем ожидаемое FALSE.

Бага?
 

alekciy

Новичок
Gas
Спасибо, кажется понял. При сравнении преобразование типов приводиться к левому операнду. Получается, что 'text_field' приводиться к int и получает 0, поэтому TRUE логично.

Однако по прежнему не ясна логики получния TRUE для случая:
PHP:
...
$v = ('text_field' == $k ) ? 'TRUE' : 'FALSE' ;
...
Ведь $k приводиться к string, получаем '0', а 'text_field' не равен '0', так почему же TRUE?
 

Angerslave

Новичок
От перемены слагаемых сумма не меняется. Гляди таблички. Грубо говоря, пхп при сравнении строки и числа приводит всё к числу. Но лучше не полагаться на это и сравнивать с учётом разных типов переменных, то есть приводить обе к одному типу.
 
Сверху