
ArrayObject 클래스의 getArrayCopy 메서드는 객체의 배열을 복사하여 반환하는 메서드입니다. 이 메서드는 배열을 얕은 복사합니다. 얕은 복사는 원본 배열의 참조를 복사하는 것입니다. 따라서 원본 배열의 요소가 변경되면 복사된 배열도 변경됩니다.
예를 들어, 다음 코드를 살펴보겠습니다.
#hostingforum.kr
php
$array = new ArrayObject([1, 2, 3]);
$copiedArray = $array->getArrayCopy();
$array[] = 4;
print_r($array); // ArrayObject Object ( [storage:ArrayObject:private] => Array ( [0] => 1 [1] => 2 [2] => 3 [4] => 4 ) )
print_r($copiedArray); // Array ( [0] => 1 [1] => 2 [2] => 3 )
위 코드에서, `$array` 객체의 요소가 변경되면 `$copiedArray`도 변경되지 않습니다. 하지만 `$array` 객체의 요소가 추가되면 `$copiedArray`에도 추가된 요소가 반영되지 않습니다. 이는 얕은 복사 특징을 나타냅니다.
만약 깊은 복사를 원한다면, 다음과 같이 코드를 수정할 수 있습니다.
#hostingforum.kr
php
$array = new ArrayObject([1, 2, 3]);
$copiedArray = array_map(function($value) { return $value; }, $array->getArrayCopy());
$array[] = 4;
print_r($array); // ArrayObject Object ( [storage:ArrayObject:private] => Array ( [0] => 1 [1] => 2 [2] => 3 [4] => 4 ) )
print_r($copiedArray); // Array ( [0] => 1 [1] => 2 [2] => 3 )
위 코드에서, `$array` 객체의 요소가 변경되면 `$copiedArray`도 변경되지 않습니다. 하지만 `$array` 객체의 요소가 추가되면 `$copiedArray`에도 추가된 요소가 반영되지 않습니다. 이는 깊은 복사 특징을 나타냅니다.
2025-07-21 09:38