Ответ 1
Точка (.
) имеет две роли в PHP:
- Как десятичная цифра, когда она является частью реального числа, например.
1.1
. Как неотъемлемая часть, так и десятичная часть являются необязательными для действительных чисел , но не в то же время. Это означает, что1.
и.1
являются действительными числами в PHP, но.
не является числом. - Как оператор конкатенации строк. Этот оператор связывает два строковых подвыражения с большим выражением. Значение большего выражения представляет собой конкатенацию строковых значений подвыражений. Подвыражения, которые не являются строками, преобразуются в строки перед конкатенацией.
Например.1 . 1
совпадает с'1' . '1'
, а его значением является строка'11'
.
Выражение 1...1
анализируется как 1. . .1
. Согласно сказанным выше, 1.
и .1
являются действительными числами (1.0
и 0.1
), а средняя точка (.
) является оператором конкатенации строк.
При преобразовании чисел в строки PHP использует минимальное количество символов, необходимых для этой операции. Если действительное число имеет только неотъемлемую часть, то оно представляет число как целое, без десятичной точки и десятичного знака.
Вот почему 1. . .1
совпадает с '1' . '0.1'
, а конечное значение выражения 10.1
.
Почему 1...1
анализируется таким образом?
Анализатор читает выражение слева направо. 1
сообщает, что число начинается там. 1.
- действительное действительное число, но 1..
- нет. Он сохраняет 1.
как число, а следующая точка - оператор конкатенации. Следующий .
, за которым следует цифра, является началом другого действительного числа (.1
).
В целом, 1...1
совпадает с 1. . .1
.