Я сделал несколько тестов со строками, используя '=='. Я знаю, что сравнивать строку '==' не так, но есть странное поведение, которое я хочу решить.
Я следую документации 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. В противном случае операнды будут интерпретироваться как целые числа, а результат также будет целым числом.