Я работал над некоторым кодом для синтаксического анализа данных, но натолкнулся на следующее.
$line = "100 something is amazingly cool";
$key = 100;
var_dump($line == $key);
Что ж, большинство из нас ожидает, что дамп выдаст ложное
, но, к моему удивлению, дамп оказался истинным
!
Я понимаю, что в PHP есть подобное преобразование типов:
$x = 5 + "10 is a cool number"; // as documented on PHP manual
var_dump($x); // int(15) as documented.
Но почему сравнение, подобное тому, как я упомянул в первом примере, преобразует мою строку в целое число вместо преобразования целого числа в строку.
Я понимаю, что вы можете выполнить строгое сравнение ===
с моим примером, но я просто хочу знать: