source

PHP에서 객체의 속성을 삭제할 수 있습니까?

factcode 2022. 11. 15. 21:29
반응형

PHP에서 객체의 속성을 삭제할 수 있습니까?

만약 내가 가지고 있다면stdObject말합니다,$a.

새 소유지를 할당하는 데 문제가 없겠지만$a,

$a->new_property = $xyz;

하지만 그걸 제거하고 싶기 때문에unset여기엔 아무 도움도 안 돼요

그렇게,

$a->new_property = null;

그런 셈이죠하지만 더 우아한 방법은 없을까?

unset($a->new_property);

이는 배열 요소, 변수 및 개체 속성에 적용됩니다.

예:

$a = new stdClass();

$a->new_property = 'foo';
var_export($a);  // -> stdClass::__set_state(array('new_property' => 'foo'))

unset($a->new_property);
var_export($a);  // -> stdClass::__set_state(array())

이것은 오브젝트 위를 루프하는 경우에도 특히 기능합니다.

unset($object[$key])

갱신하다

PHP의 새 버전은 치명적인 오류를 발생시킵니다.Fatal error: Cannot use object of type Object as array@CXJ에서 설명한 바와 같이 이 경우 괄호를 대신 사용할 수 있습니다.

unset($object->{$key})

이것은 오브젝트 위를 루프하는 경우에도 기능합니다.

unset($object->$key);

괄호는 사용할 필요가 없습니다.

이 코드는 루프에서 잘 작동합니다.

$remove = array(
    "market_value",
    "sector_id"
);

foreach($remove as $key){
    unset($obj_name->$key);
}

요소를 null로 설정합니다. 요소의 값을 null로 설정합니다. 요소가 여전히 존재합니다.

unset element는 어레이, stdClass 객체 사용자 정의 클래스 및 모든 변수에 대해 작동하는 요소를 제거하는 것을 의미합니다.

<?php
    $a = new stdClass();
    $a->one = 1;
    $a->two = 2;
    var_export($a);
    unset($a->one);
    var_export($a);
    
    class myClass
    {
        public $one = 1;
        public $two = 2;
    }
    
    $instance = new myClass();
    var_export($instance);
    unset($instance->one);
    var_export($instance);
    
    $anyvariable = 'anyValue';
    var_export($anyvariable);
    unset($anyvariable);
    var_export($anyvariable);

언급URL : https://stackoverflow.com/questions/3600750/is-it-possible-to-delete-an-objects-property-in-php

반응형