
SplDoublyLinkedList::offsetSet 메서드는 offset 인덱스에 해당하는 위치에 값을 설정하는 메서드입니다. 이 메서드는 offset 인덱스에 해당하는 위치가 실제로 존재하는지 확인하지 않고 값을 설정합니다.
이러한 동작은 SplDoublyLinkedList가 doubly-linked list를 구현하기 위해 사용하는 내부 구조 때문입니다. doubly-linked list는 각 노드가 이전 노드와 다음 노드를 참조하는 구조입니다.
offset 인덱스에 해당하는 위치가 존재하지 않으면, SplDoublyLinkedList는 새로운 노드를 추가하고, 이전에 존재하던 값을 삭제합니다.
이러한 동작을 원치 않는다면, SplDoublyLinkedList::offsetSet 메서드를 사용하기 전에 SplDoublyLinkedList::offsetExists 메서드를 사용하여 offset 인덱스에 해당하는 위치가 존재하는지 확인해야 합니다.
예를 들어, 다음과 같이 사용할 수 있습니다.
#hostingforum.kr
php
$dll = new SplDoublyLinkedList();
$dll->offsetSet(0, '값1');
$dll->offsetSet(1, '값2');
// offset 인덱스 2에 해당하는 위치가 존재하지 않습니다.
$dll->offsetSet(2, '값3');
// offset 인덱스 2에 해당하는 위치가 존재하지 않으므로, 새로운 노드를 추가하고, 이전에 존재하던 값을 삭제합니다.
// offset 인덱스 2에 해당하는 위치가 존재하는지 확인합니다.
if ($dll->offsetExists(2)) {
// offset 인덱스 2에 해당하는 위치가 존재합니다.
} else {
// offset 인덱스 2에 해당하는 위치가 존재하지 않습니다.
}
// offset 인덱스 2에 해당하는 위치에 값을 설정합니다.
$dll->offsetSet(2, '값3');
SplDoublyLinkedList::offsetSet 메서드의 이러한 동작을 이해하기 위해서는 doubly-linked list의 내부 구조를 이해해야 합니다.
2025-07-10 05:53