У меня есть следующий фрагмент кода, где я действительно не понимаю его вывод:
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"