PHP에서 배열(Array)은 서로 관련된 여러 요소를 하나의 변수 아래에 저장할 수 있는 데이터 구조입니다. 개발 과정에서 배열의 내부 구조나 저장된 값을 확인해야 할 때가 많은데, 이때 PHP에서 제공하는 내장 함수를 활용하면 손쉽게 확인할 수 있습니다.
PHP에서 배열의 구조와 값을 사람이 읽기 쉬운 형태로 출력하거나 프로그램의 실행 결과를 디버깅하려면 var_dump() 또는 print_r() 함수를 사용할 수 있습니다.
print_r()과 var_dump()의 차이점
print_r()
print_r()은 변수 정보를 사람이 읽기 쉬운(human-readable) 형식으로 출력하는 데 사용됩니다. 배열을 출력할 때는 키(key)와 요소(element)가 한눈에 들어오도록 정렬된 형태로 표시됩니다.
또한 print_r()은 객체의 protected 및 private 프로퍼티까지 표시해 주지만, static 클래스 멤버는 표시하지 않는다는 점을 기억해 두세요.
var_dump()
var_dump()는 하나 이상의 변수나 표현식에 대한 구조 정보를 출력하며, 각 값의 데이터 타입(type)과 값(value)까지 함께 보여줍니다. 배열과 객체는 재귀적으로(recursively) 탐색되며, 들여쓰기를 통해 계층 구조를 시각적으로 파악할 수 있습니다.
즉, 단순히 값만 확인하고 싶다면 print_r(), 값의 데이터 타입까지 정확하게 확인하고 싶다면 var_dump()를 사용하는 것이 좋습니다.
print_r() 사용 예제
<?php
$x = array ('x' => 'Dept', 'y' => 'Employee', 'z' => array ('a', 'b', 'c'));
print_r ($x);
?>출력 결과
위 print_r() 프로그램의 실행 결과는 다음과 같습니다.
Array
(
[x] => Dept
[y] => Employee
[z] => Array
(
[0] => a
[1] => b
[2] => c
)
)var_dump() 사용 예제
<?php
$x = array(1, 2, 3, array("x", "y", "z", "a"));
var_dump($x);
?>출력 결과
위 var_dump() 프로그램의 실행 결과는 다음과 같습니다. 각 요소의 데이터 타입(int, string 등)과 길이까지 함께 출력되는 것을 확인할 수 있습니다.
array(4) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
array(4) {
[0]=>
string(1) "x"
[1]=>
string(1) "y"
[2]=>
string(1) "z"
[3]=>
string(1) "a"
}
}print_r()과 var_dump()를 함께 사용한 예제
두 함수를 하나의 프로그램에서 동시에 사용하면 출력 형식의 차이를 더욱 명확하게 비교할 수 있습니다.
<?php
$students = array("Rohan", "Mohan", "Thomas"); // 학생 배열 생성
print_r($students);
//echo "<hr>";
var_dump($students);
?>출력 결과
위 프로그램의 실행 결과는 다음과 같습니다.
Array
(
[0] => Rohan
[1] => Mohan
[2] => Thomas
)
array(3) {
[0]=>
string(5) "Rohan"
[1]=>
string(5) "Mohan"
[2]=>
string(6) "Thomas"
}마무리
PHP 7에서 배열을 디버깅할 때 print_r()은 깔끔하고 읽기 쉬운 출력에 적합하고, var_dump()는 데이터 타입과 구조를 상세히 분석해야 할 때 유용합니다. 상황에 맞게 두 함수를 적절히 활용하면 배열 관련 문제를 더 빠르고 정확하게 해결할 수 있습니다.