출력은 모든 프로그래밍 언어의 기본입니다. PHP에서 출력은 웹페이지를 그려주는 것이겠죠. 근데 출력도 여러가지가 있습니다. 실제 프로덕션 환경에서는 echo밖에 쓸 일이 없긴 한데, 디버깅을 할 때는 print_r과 var_dump도 많이 사용합니다. 자 그러면 하나 하나 뜯어보겠습니다.
echo는 PHP에서 아주 기본적인 것 이라고 할 수 있겠습니다. 지시한 문자 그대로를 출력합니다. 하지만 몇가지 예외도 있는데요, 아래 예시를 통해 확인해보겠습니다.
$a='dd'
$b=true;
$c=[];
이렇게 정의된 변수들이 있다고 가정하겠습니다. 아래 코드에서 위의 것들을 출력합니다.
echo $a;
echo $b;
echo $c;
echo $d;
이 명령어들을 실행했을 때 결과는 아래와 같습니다.
dd
1
Array
하나 하나 해석해 보겠습니다. 먼저 첫번째는 문자열 'dd'가 정의된 변수를 출력했으므로 정상적으로 출력됩니다. 두번째는 불리언입니다. 논리연산에 따라 1이 출력됩니다. 세번째는 배열입니다. 배열은 문자열로 출력할 수 없으므로 Array가 출력되었네요. 네번째는 정의되지 않은 변수를 출력했습니다. 정의되지 않았으므로 아무것도 출력되지 않았습니다.
print_r은 주로 배열을 검사할 때 많이 사용됩니다. 백문이 불여일견이라고, 이건 설명보다는 예제가 이해에 쉬우니 바로 예제를 보시죠.
print_r('ddd');
print_r(['dd']);
이걸 실행하면
ddd
Array ( [0] => dd )
라는 결과가 나옵니다. 하나 하나 살펴보겠습니다.
첫번째로 ddd라는 문자열을 출력했습니다. 이건 단순 문자열이므로 echo와 결과는 같습니다. 두번째는 배열입니다. print_r은 디버깅 할 때 많이 쓴다고 말씀드렸는데, 예제와 같이 배열을 그냥 출력해주기 때문입니다.
지금까지 나온 출력 명령어(함수)들은 모두 자료형은 다루지 않았습니다. var_dump는 가장 세세한 정보를 출력합니다. 예제 보시죠.
var_dump('dd');
var_dump(['dd','dd']);
var_dump(true);
var_dump($a);
이 코드의 결과는 다음과 같습니다.
string(2) "dd"
array(2) { [0]=> string(2) "dd" [1]=> string(2) "dd" }
bool(true)
NULL
네. 여기서는 string, array, bool 등 자료형까지 표현해주고 있습니다. 심지어 지금까지 나오지 않았던 NULL까지 출력됩니다.
프로덕션 환경에서는 위에 서술했듯이 echo가 제일 좋습니다. 덕지덕지 붙은 것 없이 문자열만 딱 출력해주기 때문이죠. 하지만 디버깅 할 때는 이야기가 다릅니다. 배열을 다룰 때는 깔끔한 print_r을, 다른 문자열(불리언, NULL 등)을 다룰 때눈 var_dump를 사용하는 것이 좋습니다.