2017-05-17 7 views
12

나는 정말 그 출력을 이해하지 못하고 다음과 같은 코드를 가지고 :내 코드에서 두 개의 숫자를 연결하는 '...'이유는 무엇입니까?

echo 20...7; 

왜이 코드 출력 200.7합니까?

...은 루비에서 호출되는 splat 연산자이므로 가변 개수의 인수가있는 함수를 사용할 수 있지만 여기서는 echo이라는 컨텍스트에서 무엇을하는지 이해하지 못합니다.

이 코드가 정확히 무엇을 설명 할 수 있습니까?

+0

[... 인수 풀고 (PHP 5.6부터)] (http://wiki.php.net/rfc/argument_unpacking) :

그래서 결국 코드는 동일합니다 포함 된] (http://stackoverflow.com/q/3737139/1415724) 중복. –

+0

같은 학급에 두 분이 계세요? http://stackoverflow.com/q/44023880/1415724 –

+0

@JohnConde 만약 내가 나쁜 접근을했는지 궁금해하기 시작합니다 –

답변

13

아니요, 이것은 splat/unpacking 연산자가 아닌 것처럼 보일 수도 있습니다. 이는 PHP 구문 분석 프로세스의 결과 일뿐입니다. 이미 다른 약간 혼란을 취소 할 수 코드를 작성 : 당신이 .70.7 것을 알고있다 이제

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

을하고 syntax for float numbers에 설명 된대로 PHP에서 0을 생략 할 수 있습니다 : 그래서

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

PHP는이 두 숫자를 연결하여이 PHP 유형의 저글을 수행하는 동안 silently convert both numbers to strings이됩니다. 에 따라 [

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

더 정확히 말하면, PHP는'20 ... 7'을'20과 동일하게 분석합니다. . 이것은'20.0을 쓰는 또 다른 방법이다. 0.7 '이다. – axiac

+0

@axiac 오른쪽, 내 의견에 올바른 버전이 있었는데, rix 것입니다. – YvesLeBorg