본문으로 바로가기

전에 포스팅한 것중에서 따옴표와 작은따옴표의 차이점에서 설명한 적이 있다.

요번에 포스팅할 작은따옴표의 쓰임 중 배열의 key값에 '(작은따옴표)를 쓰는 것을 권장하는 이유에대해서 설명하고자한다.

(또는 $_GET, $_POST, $_REQUEST에서도 포함되는 내용이다)

 

예를들어서 이런것이다.

//define 변수 선언  define("EMAIL", "test@naver.com");  //배열 선언 $result = Array( 'NAME' => "shaking", 'EMAIL' => "test@gmail.com");  //배열 출력 echo "1 : ".$result['EMAIL']."
"; //1번 echo "2 : ".$result[EMAIL]."
"; //2번 echo "define : ".EMAIL; //3번

위 예시 중 배열 출력 부분을 보면, 1번과 2번의 출력값은 다르며,

왜 다른지에 대한 설명과 함께 작은따옴표를 쓰는 것을 권장하는 이유에 대해 설명하겠다.

 

1. 배열 출력 값

- 1번 : test@gmail.com

- 2번 : 출력되는 값 없음

- 3번 : test@naver.com

 

2. 1번$result['EMAIL'] 출력 값에 대한 이유

다들 알고 있듯이 result라는 배열에서 key값이 EMAIL인 배열의 값을 가져오는 것이므로,

1번의 출력값은 test@gmail.com이 된다.

 

 

3. 3번(EMAIL) 출력 값에 대한 이유(deifne 변수 선언에 대한 설명)

우선, define에 대한 설명을 간단하게 하자면

위의 예제소스코드를 시작할 때 EMAIL이라는 값에 test@naver.com이라고 선언을 하고 시작한다는 뜻으로

 

echo EMAIL; 

을 한다면, 출력값은 test@naver.com이 된다. (예전에 define에 대해 포스팅한 적이 있으니 참고할 것)

 

4. 2번($result[EMAIL]) 출력 값에 대한 이유

마지막으로, 2번의 출력값이 왜 없는지에 대한 설명을 하겠다.

PHP는 소스코드를 읽어들일때 소스코드를 처음 시작할 때부터 끝날때까지 한줄 씩 읽어와 실행하는

절차지향 방식이다. (이와 같은 언어로 javascript, html 등이 있다)

따라서 define에 EMAIL이라는 값에 test@naver.com이라는 값을 선언을 한것이 실행되었고,

EMAIL이라는 값에 test@naver.com이 적용되었기때문에

$result[EMAIL] 은 즉, $result[test@naver.com]이라는 값으로 수정이 된다.

현재 소스코드에는 $result[test@naver.com]라는 변수가 없으므로 당연히 출력되는 값이 없다는 것이다.

 

이쯤되면 왜 1번과 2번의 출력 값이 다른지를 이해할 수 있을것이다.

다시한번 정리하자면

1번은 $result라는 배열 변수에 key값이 EMAIL이라는 값을 가져오므로 제대로 배열 값을 출력 할 수 있지만,

2번은 $result라는 배열 변수에 key 값이 define에 선언된 EMAIL값인 test@naver.com이라는 값을 가져와야하지만

그에 알맞는 값이 없으므로 출력값이 없다는 것.

 

그리고 이와 같은 오류를 범하기 위해 우리는 배열이나 $_POST, $_GET, $_REQUEST에서 어떠한 key값에 대한 값을 가져올때

'(작은따옴표)를 써야한다는 것이다.

작은따옴표를 쓰면, 작은 따옴표 안에 있는 문자열이 현재 내가 쓰고자하는 값이 무엇인지

정확하게 구분되어 값을 가져올때 오류를 범하는 실수를 만회할수 있기때문이다.

 

열심히 설명했는데 이해가 쉽게 설명했는지는 모르겠당...

이래서 난 공대스톼일.........ㅠㅠ