Сравнение строк PHP с использованием '=='

Я сделал несколько тестов со строками, используя '=='. Я знаю, что сравнивать строку '==' не так, но есть странное поведение, которое я хочу решить.

Я следую документации PHP на этой странице: http://www.php.net/manual/en/language.operators.comparison.php . Это тест, который я сделал

<?php var_dump( "100" == "1e2" ); //outputs boolean true var_dump( (int) "100" ); //int 100 var_dump( (int) "1e2" ); //int 1 ?> 

В документации говорится, что при сравнении строк с числами PHP сначала преобразует строку в числа, но когда я конвертирую '100' и '1e2' в числа, они не равны. Сравнение должно выводить логическое значение false.

Почему это странное поведение? Благодаря!

Не все числа являются целыми числами. 1e2 – это float (который может быть представлен как целое число, но не является прямым конвертируемым в целое число). Попробуйте преобразовать в float а не int s:

 <?php var_dump( "100" == "1e2" ); // bool(true) var_dump( (float) "100" ); // float(100) var_dump( (float) "1e2" ); // float(100) ?> 

Тип Жонглирование не равен типу литья

На странице «Тип жонглирования»

Если любой из операндов является поплавком, то оба операнда оцениваются как float, а результатом будет float. В противном случае операнды будут интерпретироваться как целые числа, а результат также будет целым числом.