Почему «…» объединяет два числа в моем коде?

У меня есть следующий фрагмент кода, где я действительно не понимаю его вывод:

echo 20...7; 

Почему этот код выводит 200.7 ?

Из того, что я знаю ... это оператор splat, который он вызывается в ruby, который позволяет вам иметь функцию с переменным числом аргументов, но я не понимаю, что она здесь делает в контексте с echo .

Может ли кто-нибудь объяснить, что именно делает этот код?

Нет, это не оператор splat / unpacking, даже думал, что это может показаться. Это результат процесса разбора PHP. Уже написав свой код немного по-другому, вы можете устранить некоторую путаницу:

 echo 20. . .7; # ↑ ↑ ↑ # decimal concatenation decimal # dot dot dot 

Теперь вы должны знать, что .7 равно 0.7 и вы можете опустить 0 в PHP, как описано в синтаксисе для чисел с плавающей запятой :

 DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*) 

Таким образом, PHP просто объединяет эти два числа вместе, и при этом жонглирование типа PHP будет молча конвертировать оба числа в строки .

Таким образом, ваш код эквивалентен:

 echo "20" . "0.7"; //Output: "200.7"