PHP сравнение строк

167
10 марта 2019, 10:00

Ребята, почему перечисленные условия возвращают true?

var_dump("10" == "1e1"); //true
var_dump(100 == "1e2"); //true
var_dump("1" == "01"); //true

Спасибо

Answer 1

Если строка распознается как числовое значение, результирующее значение и тип определяется так, как показано далее.

К примеру:

100 == "1e2" - true, так как 1 умножить на 10 в квадрате равно 100.

Аналогично, 1e1 это 1 умножить на 10 в первой степени, значит ровно 10. Такая запись удобна для записи очень больших или очень маленьких чисел. Например, 6.02e23 - это число Авогадро, которое без экспоненциальной записи будет иметь вид что-то вроде 602214076000000000000000.

Если строка не содержит какой-либо из символов '.', 'e', или 'E', и значение числа помещается в пределы целых чисел (определенных PHP_INT_MAX), строка будет распознана как целое число
Во всех остальных случаях она считается числом с плавающей точкой (float).

Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль). Верное числовое значение - это одна или более цифр (могущих содержать десятичную точку), по желанию предваренных знаком с последующим необязательным показателем степени. Показатель степени - это 'e' или 'E' с последующими одной или более цифрами.

Это все описано в этой статье из мануала по PHP.

Про экспоненциальную запись чисел вообще.

READ ALSO
PHP, XMLReader, Ошибка PCDATA invalid Char value

PHP, XMLReader, Ошибка PCDATA invalid Char value

PHP+MySQLИспользую XMLReader для импорта в БД XML-файлов (товарные фиды), так как XML-файлы большие (от 1 до 10 ГБ), кодировка UTF-8

124
Где почитать о php на тему создания маски и условий для автозаполнения мета-тегов?

Где почитать о php на тему создания маски и условий для автозаполнения мета-тегов?

Где почитать о php на тему создания маски и условий для автозаполнения мета-тегов? ЗдравствуйтеЯ начинающий, хочу изучить тему автоматизации...

153
Получить время выполнения функций

Получить время выполнения функций

Мне нужно получить время выполнения функцийМетод по типу microtime не подходит

129
Общие файлы для загрузки в разных точках входа Yii2-Advanced

Общие файлы для загрузки в разных точках входа Yii2-Advanced

У меня имеется приложение с несколькимим точками входа domainname backend

139