Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP unset() 함수로 변수 참조 연결 해제하기

개요

PHP에서는 unset() 함수를 사용해 변수와 값(내용) 사이의 바인딩을 끊을 수 있습니다. 여기서 중요한 점은 unset()이 값을 소멸시키는 것이 아니라, 변수와 값 사이의 연결만 분리한다는 사실입니다. 따라서 다른 변수가 같은 값을 계속 참조하고 있다면 그 값은 그대로 유지됩니다.

예제 1: unset()으로 참조 해제

<?php
$a = 10;
$b = &$a;
echo "before unsetting : ", $a, " ", $b, PHP_EOL;
unset($b);
echo "after unsetting :" . $a . " ";
$b = 20;
echo $b;
?>

출력 결과

unset($b)가 실행되면 $b와 값 사이의 참조 관계만 제거됩니다. 이후 $b는 일반 변수처럼 새로운 값을 자유롭게 할당받을 수 있으며, $a는 여전히 원래 값인 10을 유지합니다.

before unsetting : 10 10
after unsetting :10 20

NULL 할당과 참조의 관계

그렇다면 참조된 변수에 NULL을 할당하면 참조가 제거될까요? 결론부터 말하면 그렇지 않습니다. 참조된 변수에 값을 할당하면 두 변수가 공유하는 값 자체가 변경됩니다. 다음 예제로 직접 확인해 보겠습니다.

예제 2: 참조 상태에서 NULL 할당하기

<?php
$x = 100;
$y = &$x;
echo "x and y are references ", $x, " ", $y, PHP_EOL;
$y = NULL;
$x = 200;
echo "x: ", $x . " y: ", $y, PHP_EOL;
?>

출력 결과

$y에 NULL을 할당하면 $x와 $y가 공유하는 값이 함께 NULL이 됩니다. 이후 $x에 200을 할당하면 두 변수 모두 200을 출력합니다. 이는 NULL 할당이 참조 연결을 끊는 것이 아니라 공유된 값을 변경할 뿐임을 보여줍니다. 변수 간의 참조 연결을 완전히 제거하려면 unset() 함수를 사용해야 합니다.

x and y are references 100
x: 200 y: 200