정의 및 사용 방법
- PHP 버전
- 4+
var_dump()
는
주어진 변수나 값의 타입·길이·값을 가공하지 않은(원시, raw) 구조화된 정보로 상세하게 출력하는 디버깅용 함수입니다.
이 함수는 변수나 값의 타입과 값을 한눈에 확인할 수 있는 디버깅 필수 도구로, 코드 문제 해결과 실험 학습 모두에 유용합니다.
특징
- 값을 반환하지 않고, 정보를 브라우저나 CLI 같은 표준 출력으로 즉시 기록합니다.
- 주어진 변수나 값의 데이터 타입(예:
int
,string
,array
,object
등)과 길이, 실제 값을 구조화된 형태로 함께 보여줍니다. - 여러 변수나 값을 쉼표(
,
)로 구분하여 한 번에 전달할 수 있으며, 순서대로 상세 정보가 출력됩니다.
반면에 print_r()
은
주어진 변수나 값의 정보를 사람이 읽기 쉬운 형태로 출력(Prints human-readable)하는 디버깅용 함수입니다.
구문
var_dump(mixed $value, mixed ...$values): void
매개변수
$value |
정보를 덤프할 첫 번째 변수나 값입니다. mixed 는 PHP의 모든 데이터 타입을 받을 수 있음을 의미합니다. |
---|---|
$value |
정보를 덤프할 선택적 추가 변수나 값입니다. 이 부분 덕분에 쉼표(, )로 구분하여 여러 개의 변수나 값을 한 번에 전달할 수 있습니다. |
반환 값
없음.
예제
var_dump()
는 변수가 어떤 타입을 가지고 있는지, 값은 무엇인지, 길이는 얼마나 되는지를 한눈에 확인할 수 있는 함수입니다.
이 예제에서는 다양한 데이터 타입별로 var_dump()
가 어떻게 출력되는지 직접 확인해보고, 특히 문자열 타입에서는 멀티바이트 문자 처리까지 함께 살펴보겠습니다.
스칼라 타입(Scalar Types)
정수(int)
$int = 123;
var_dump($int);
int(123)
실수(float/double)
$float = 3.14;
var_dump($float);
float(3.14)
문자열(string)
$str = 'Hello';
var_dump($str);
string(5) "Hello"
문자열(string) - 멀티바이트
한글, 일본어, 중국어 등 멀티바이트의 문자열도 바이트 단위 길이로 보여줍니다.
$korean = '가나다';
var_dump($korean);
// 출력: string(9) "가나다" (UTF-8 기준, 3바이트 × 3글자)
부울(boolean)
$bool = true;
var_dump($bool);
true
/ (flase
)은 길이가 없으므로, 타입과 값만 표시됩니다.
bool(true)
배열(array)
단순 배열(인덱스 배열)
$arr = [1, 2, 3];
var_dump($arr);
array(3) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
}
연관 배열
$assoc = ['a' => 1, 'b' => 2, 'c' => 3];
var_dump($assoc);
array(3) {
["a"]=>
int(1)
["b"]=>
int(2)
["c"]=>
int(3)
}
혼합 배열
$complex = ['a' => 1, 'b' => [2, 3], 'c' => 4];
var_dump($complex);
array(3) {
["a"]=>
int(1)
["b"]=>
array(2) {
[0]=>
int(2)
[1]=>
int(3)
}
["c"]=>
int(4)
}
객체(object)
class Person {
public $name = "John";
private $age = 30;
}
$p = new Person();
var_dump($p);
object(Person)#1 (2) {
["name"]=>
string(4) "John"
["age":"Person":private]=>
int(30)
}
객체의 출력에 대한 상세 설명입니다.
object(Person)
- 객체의 클래스 이름이
Person
임을 나타냅니다.
#1
- 현재 실행 중인 스크립트에서 생성된 객체 인스턴스의 고유 ID입니다.
- 다른 인스턴스를 생성하면
#2
,#3
… 식으로 증가하며, 객체를 구분할 때 참고됩니다. - PHP 내부에서 객체를 추적하는 식별자 역할이며, 디버깅 용도로 보여줍니다.
(2)
- 객체의 속성(property) 개수를 의미합니다.
- 속성별 표시
['name']=> string(4) 'John'
→ 공개(public) 속성["age":"Person":private]=> int(30)
→ 비공개(private) 속성."Person"
은 속성이 정의된 클래스 이름을 나타냄
NULL
$n = null;
var_dump($n);
NULL
이라고 출력됩니다.
NULL
리소스(resource)
$fp = fopen("php://temp", "r");
var_dump($fp); // resource(5) of type (stream)
fclose($fp);
resource(2) of type (stream)
리소스의 출력에 대한 상세 설명입니다.
resource
- 리소스(resource) 타입임을 나타냅니다.
(2)
- 현재 실행 중인 스크립트에서 생성된 리소스 ID입니다.
- 새로운 리소스를 생성하면
resource(3)
,resource(4)
… 식으로 증가합니다.
of type (stream)
- 리소스가 어떤 유형인지 나타냅니다.
- 여기서는 스트림(stream) 리소스, 즉 파일이나 입력/출력 스트림을 의미합니다.
- 다른 타입으로는
socket
,curl
,gd
등도 존재합니다.
여러 변수 동시에 출력
여러 변수나 값을 쉼표(,
)로 구분하여 한 번에 전달할 수 있으며, 순서대로 상세 정보가 출력됩니다.
$a = 1;
$b = 'text';
$c = [1,2];
var_dump($a, $b, $c);
int(1)
string(4) "text"
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
참고문헌
같이 보기
- PHP print_r() 함수 – 변수의 정보을 사람이 읽기 쉽게 출력
- PHP isset() 함수와 empty() 함수 – 개념 정리 및 사용법과 차이점
- PHP gettype() 함수 – 변수의 데이터 타입 문자열로 확인
- PHP is_int() 함수 – 변수의 정수(integer) 타입 확인
- PHP is_float() 함수 – 변수의 부동소수점 숫자(float) 타입 확인
- PHP is_numeric() 함수 – 변수의 값이 숫자 또는 숫자 문자열인지 확인
- PHP is_string() 함수 – 변수의 문자열(string) 타입 확인
- PHP is_array() 함수 – 변수의 배열(array) 타입 확인
- PHP is_bool() 함수 – 변수의 부울(boolean) 타입 확인
- PHP is_object() 함수 – 변수의 객체(object) 타입 확인
- PHP is_resource() 함수 – 변수의 리소스(resource) 타입 확인
- PHP is_null() 함수 – 변수의 NULL 타입 확인