채택완료

PHP Echo 문에서 변수 연결 시 마침표와 쉼표 이용에 관해..

<?php

$x = "홈짱닷컴" ;

$y = " Homzzang.com" ;

$z = $x.$y ;

echo $z . " 많이 사랑해 주세요.<br>" ; // 케이스 1 - 마침표로 연결

echo $z , " 많이 사랑해 주세요.<br>" ; // 케이스 2 - 쉼표로 연결

echo $x . $y . " 많이 사랑해 주세요.<br>" ; // 케이스 3 - 마침표로 연결.

echo $x , $y , " 많이 사랑해 주세요.<br>" ; // 케이스 4 - 쉼표로 연결.

?>

출력결과 - 넷 모두 정상 출력 됨.

 
홈짱닷컴 Homzzang.com 많이 사랑해 주세요.
홈짱닷컴 Homzzang.com 많이 사랑해 주세요.
홈짱닷컴 Homzzang.com 많이 사랑해 주세요.
홈짱닷컴 Homzzang.com 많이 사랑해 주세요.

<?php

$site = "홈짱닷컴";

$url = "Homzzang.com";

$x = date("Y"); // 올해 년도  ※ 이 포스팅 작성 중인 현재 년도 2016년 경우, 2016이 변수 $x에 담김.

$y = 2012;

$z = $x - $y ; // $x - $y 사칙연산 결과를 변수 $z에 새롭게 선언

echo $y . "년 오픈 후 " . $z . "년째 <p>"; // 케이스 1 - 마침표로 연결

echo $y , "년 오픈 후 " , $z , "년째 <p>"; // 케이스 2 - 쉼표로 연결

echo $y . "년 오픈 후 " . $x - $y . " 년째 <p>"; // 케이스 3 - 마침표로 연결

echo $y , "년 오픈 후 " , $x - $y , "년째 <br>"; // 케이스 4 - 쉼표로 연결

?>

출력 결과 - 케이스3이 이상하게 출력 됨.

 
2012년 오픈 후 4년째

2012년 오픈 후 4년째

0 년째

2012년 오픈 후 4년째 


왜, 두 번째 PHP 소스에서 3번째 케이스는 에러가 나는 건가요?

PHP 구문에서 마침표 ( . )로 연결하는 경우와 쉼표 ( , )로 연결하는 자세한 용법이 궁금합니다.

답변 1개 / 댓글 3개

채택된 답변
+20 포인트
2016-08-06 (토) 12:12:49

echo $y . "년 오픈 후 " . $x - $y . " 년째 <p>"; // 케이스 3 - 마침표로 연결 

=>

($y . "년 오픈 후 " . $x) - ($y)

(2012년 오픈 후 2016) - (2012)

앞에 가로로 쳐저 있는 문자열을 php에서 숫자형으로 인식하는 경우 2012로 인식합니다.

(앞에 숫자가 있어서, 문자열은 자동삭제)

해서 결과가 0으로 나오는거구요. (2012 - 2012)

echo $y . "년 오픈 후 " . ($x - $y) . " 년째 <p>"; // 케이스 3 - 마침표로 연결

이렇게 연결하시면 정상적으로 나옵니다.

.은 문자열을 연결시키는 연산자이고

,는 나열(?)하는 연산자로 보시면 됩니다.

즉 쉼표인 경우에는 하나하나를 개별 변수로 처리한다고 하면,

.인 경우는 왼쪽과 연결되어 처리되는 부분입니다.


답변에 대한 댓글 3개

아주 자세하게 예까지 들어 설명해주셔서 정말 고맙습니다. 덕분에 궁금증이 많이 풀렸어요.

그런데, 혹시,

큰따옴표 구문 안에서 사칙연산 표현식 사용은 불가능한가요?
아래처럼. 표현해봤는데, 에러 나네요.

echo "{$y}년 오픈 후 ($x - $y)년째 <br>";
echo "{$y}년 오픈 후 ({$x} - {$y})년째 <br>";
2016-08-06 (토) 13:28:21
불가능한걸로 알고 있습니다.
애당초 권장하지도 않는 방법이구요. 쌍따옴표 내에는 말그대로 문자열만 있는게 좋습니다.
그렇군요. 혹시나 방법이 있나 싶어 이 방법 저 방법 다 해봤는데,,,ㅎ 원래 없는 거 였군요.

덕분에 궁금증이 몽땅 해결되었습니다. 감사합니다.

답변을 작성하려면 로그인이 필요합니다.