728x90
안녕하세요,
오늘은 PHP의 값 복사 vs 참조 동작을 이해할 수 있는 debug_zval_dump()에 대해 알아보겠습니다.
debug_zval_dump()
debug_zval_dump()는 PHP에서 변수의 내부 구조를 덤프(dump) 하면서, 해당 값이 몇 개의 변수에 의해 참조되고 있는지까지 보여주는 디버깅 함수입니다.
보통은 우리가 $a = 'hello'; $b = $a;처럼 코드를 작성하면,
값이 그냥 복사되는 것처럼 보이지만, 실제로 PHP는 복사를 지연시키고,
참조(refcount)를 늘려서 성능을 최적화합니다.
이 함수는 아래 상황에 유용합니다.
- 값이 복사되는 시점(= 실제 메모리 할당 시점)을 알고 싶을 때
- 참조로 인해 값이 어디까지 연결되어 있는지 확인하고 싶을 때
- PHP가 copy-on-write(쓰기 시 복사) 방식으로 동작함을 실험하고 싶을 때
- 내부적으로 값이 어떻게 처리되는지 궁금할 때
<?php
$a = "Hello";
$b = $a;
debug_zval_dump($a);
?>
결과
string(5) "Hello" refcount(2)
- "Hello"라는 문자열이 현재 $a와 $b 두 변수에 의해 공유되고 있다는 의미
'PHP' 카테고리의 다른 글
[PHP] 날짜 및 시간 객체 선언하여 다루기 (1) | 2025.08.10 |
---|---|
[PHP] get_defined_vars() 함수로 정의된 변수 확인하기 (2) | 2025.08.09 |
[PHP] DatePeriod와 DateInterval 활용하여 반복되는 날짜 자동 처리하기 (0) | 2025.07.18 |
[PHP] array_flip() 로 키-값 역전하기 (1) | 2025.07.11 |
[PHP] array_merge_recursive() 다차원 배열 병합 (0) | 2025.07.06 |