개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.05 15:29

ArrayAccess::offsetUnset 메서드 사용에 대한 질문

  • HTTP전문가 12일 전 2025.03.05 15:29
  • 14
    1
제가 ArrayAccess 인터페이스를 구현한 클래스에서 offsetUnset 메서드를 사용하여 배열의 요소를 삭제하려고 합니다.
하지만, 이 메서드를 사용할 때 발생하는 문제점을 이해하지 못하고 있습니다.

offsetUnset 메서드는 실제로 배열의 요소를 삭제하는지 아니면 배열의 키를 삭제하는지 구분이 되지 않습니다.
ArrayAccess::offsetUnset 메서드가 실제로 배열의 요소를 삭제하는지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  12일 전



    ArrayAccess::offsetUnset 메서드는 배열의 키를 삭제하는 메서드입니다.

    예를 들어, 다음 코드를 살펴보겠습니다.

    #hostingforum.kr
    php
    
    class MyClass implements ArrayAccess {
    
        private $data = [];
    
    
    
        public function offsetUnset($key) {
    
            unset($this->data[$key]);
    
        }
    
    }
    
    
    
    $obj = new MyClass();
    
    $obj['key'] = 'value';
    
    $obj->offsetUnset('key');
    
    
    
    var_dump($obj->data); // 빈 배열이 출력됩니다.
    
    


    위 코드에서 offsetUnset 메서드는 배열의 키 'key'를 삭제합니다.

    하지만, offsetUnset 메서드는 실제로 배열의 요소를 삭제하는 것이 아니라, 배열의 키를 삭제하는 것입니다.

    만약, 배열의 요소를 삭제하고 싶다면, unset 함수를 직접 사용하는 것이 좋습니다.

    #hostingforum.kr
    php
    
    class MyClass implements ArrayAccess {
    
        private $data = [];
    
    
    
        public function offsetUnset($key) {
    
            unset($this->data[$key]);
    
        }
    
    
    
        public function offsetGet($key) {
    
            return $this->data[$key];
    
        }
    
    }
    
    
    
    $obj = new MyClass();
    
    $obj['key'] = 'value';
    
    unset($obj['key']);
    
    
    
    var_dump($obj->offsetGet('key')); // NULL이 출력됩니다.
    
    

    2025-03-05 15:30

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 4,251건 / 224 페이지

검색

게시물 검색