PHP 디버그 출력 var_dump, var_export, print_r 사용 방법

변수의 내용을 확인하고 싶은 경우, 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가지를 확인해보았습니다.

각각 조금씩 차이가 있습니다.

어느 것이 가장 좋다고는 얘기할 수 없습니다.

상황과 용도에 맞게 사용을 하는 것이 가장 좋습니다.

댓글