Нестрогое сравнение переменных. Правильно ли?

TuBu

Guest
Нестрогое сравнение переменных. Правильно ли?

Собственно, даже не проблема.

Просто недавно отлаживал скрипт. И долго крутился вокруг такого места.

$status = get_status(); //Моя функция. Я твердо знал, что она возвращает true в том случае, когда я ее тестировал.

if ($status == "On"){
; //Какой-то код.
}

И вот это место я пропускал, я даже подумать не мог, что проверка проходит! Только после
var_dump($status == "On") (выводит bool(true) )
я что-то начал понимать.

Правильно ли такое поведение?

И если правильно, то почему тогда не выполняется 3 сравнение в таком коде:

Код:
    var_dump(true == 1);
    var_dump(true == "On");
    var_dump(1 == "On");
Выводит

bool(true) bool(true) bool(false)

В принципе, проблема не суть как страшна. Интересно, как это можно обьяснить...
 
Сверху