변수의 내용을 확인하고 싶은 경우, PHP에서는 var_dump, var_export, print_r 등을 사용합니다.
하지만 어떠한 것을 사용하여 값을 출력하면 좋을지 망설여지는 경우가 있습니다.
하나씩 사용해보면서 확인해보도록 하겠습니다.
var_dump
변수에 관한 정보를 덤프 해주는 것으로, 배열 등의 요소 개수나 값의 타입까지 상세하게 출력해줍니다. 반환값은 없습니다.
<?php
$array = array(
'key1' => 'hoge_1',
'key2' => 'hoge_2',
'key3' => 'hoge_3'
);
var_dump($array);
실행 결과
array(3) {
["key1"]=>
string(6) "hoge_1"
["key2"]=>
string(6) "hoge_2"
["key3"]=>
string(6) "hoge_3"
}
var_export
var_export는 var_dump와 비슷합니다.
출력되는 결과가 PHP 코드 형식으로 되어 있기 때문에 복사해서 그대로 사용할 수도 있습니다.
그리고 var_dump와 다른 점으로는 두 번째 파라미터에 true를 설정하면 출력 결과를 보여주는 대신에 반환값을 반환합니다.
<?php
$array = array(
'key1' => 'hoge_1',
'key2' => 'hoge_2',
'key3' => 'hoge_3'
);
var_export($array);
실행 결과
array (
'key1' => 'hoge_1',
'key2' => 'hoge_2',
'key3' => 'hoge_3',
)
print_r
변수에 대한 정보를 간단하게 출력해주는 형태로 배열의 키와 값만을 확인하고 싶은 경우 사용됩니다.
출력 결과가 var_export와 비슷합니다.
var_export와 동일하게 두 번째 파라미터로 true를 지정하면 결과를 출력하는 대신에 반환값으로 결과를 받을 수 있습니다.
<?php
$array = array(
'key1' => 'hoge_1',
'key2' => 'hoge_2',
'key3' => 'hoge_3'
);
print_r($array);
실행 결과
Array
(
[key1] => hoge_1
[key2] => hoge_2
[key3] => hoge_3
)
PHP에서 디버그 출력용으로 값을 표시하는 3가지 방법을 봤습니다.
간단하게 정리를 해보면 다음과 같습니다.
・값의 타입등 상세한 내용을 확인하고 싶은 경우는 var_dump
・key와 value만 확인하고 싶은 경우에는 var_export 또는 print_r
・출력하지 않고 결과를 변수에 저장하고 싶을 경우도 var_export 또는 print_r
결과를 출력하지 않고 변수에 저장하는 방법은 두 번째 파라미터에 true를 설정해주면 됩니다.
<?php
$array = array(
'key1' => 'hoge_1',
'key2' => 'hoge_2',
'key3' => 'hoge_3'
);
//var_export 결과를 변수에 대입
$var_export_result = var_export($array,true);
//print_r 결과를 변수에 대입
$print_r_result = print_r($array,true);
로그 파일에 출력
로그파일에 출력하고 싶은 경우도 있습니다.
간단하게 작성 가능한 것은 var_export 또는 print_r 입니다.
반환 값으로 받을수 있기 때문에 PHP 표준 함수 error_log 함수를 사용하여 출력할 수 있습니다.
<?php
$array = array(
'key1' => 'hoge_1',
'key2' => 'hoge_2',
'key3' => 'hoge_3'
);
//var_export와 error_log 사용 하여 로그 파일에 출력
error_log(var_export($array, true), 3, "./debug.txt");
//print_r와 error_log 사용 하여 로그 파일에 출력
error_log(print_r($array, true), 3, "./debug.txt");
위의 샘플처럼 변수에 대입하지 않고 error_log에서 직성 작성해주어도 가능합니다.
마지막으로 로그 파일에 var_dump를 사용하여 상세한 정보까지 출력하고 싶은 경우를 보겠습니다.
<?php
$array = array(
'key1' => 'hoge_1',
'key2' => 'hoge_2',
'key3' => 'hoge_3'
);
//버퍼에 출력 시작
ob_start();
//배열 덤프
var_dump($array);
//버퍼에 내용을 저장
$content = ob_get_contents();
//버퍼 종료
ob_end_clean();
error_log($content,3,'./debug.txt');
ob_start 표준 출력 버퍼링을 사용하여 반환값이 없는 var_dump도 로그 파일에 출력할 수 있습니다.
PHP에서 사용하는 디버그 출력용으로 var_dump, var_export, print_r 3가지를 확인해보았습니다.
각각 조금씩 차이가 있습니다.
어느 것이 가장 좋다고는 얘기할 수 없습니다.
상황과 용도에 맞게 사용을 하는 것이 가장 좋습니다.
댓글