>  기사  >  백엔드 개발  >  PHP에서 정적 변수를 삭제하는 방법

PHP에서 정적 변수를 삭제하는 방법

王林
王林원래의
2020-09-27 17:38:373108검색

PHP에서 정적 변수를 삭제하는 방법: [$temp = null]과 같이 재정의하여 삭제할 수 있습니다. unset() 함수를 사용하여 정적 변수를 삭제할 수는 없습니다. 이 함수는 지역 변수만 파괴하기 때문입니다.

PHP에서 정적 변수를 삭제하는 방법

PHP는 정적 변수를 설정합니다. 이 정적 변수를 삭제해야 하는 경우 unset($tmp)을 사용하여 삭제하면 다음과 같은 사항을 찾을 수 있습니다. 재귀 함수로서 내부에 정적 변수를 설정한 후 foreach()에서 이 재귀 함수를 사용해야 합니다. 이 재귀 함수가 처음 실행되면 값을 지워야 합니다. unset()을 사용해도 효과가 없으면 정보를 참조한 후 $tmp=null을 사용해야 한다는 것을 알았습니다.

(권장 튜토리얼: php 비디오 튜토리얼)

데이터 프로토타입은 배열입니다.

$data=[
    '1'=>[
        'pid'=>0,
        'title'=>'test1'
    ],
    '2'=>[
        'pid'=>1,
        'title'=>'test2'
    ],
    '3'=>[
        'pid'=>2,
        'title'=>'test3'
    ],
];

Unset() 사용:

function getBreadNav($data,$id,$mark=1){
    static $tmp;
    if($mark==1){
        unset();
    }
    if(isset($data[$id])){
        $tmpresult['title']=$data[$id]['title'];
        $tmp[]=$tmpresult;
        getBreadNav($data,$data[$id]['pid'],$mark=2);
    }
    return $tmp;
}

변수에 null 할당:

function getBreadNav($data,$id,$mark=1){
    static $tmp;
    if($mark==1){
        $tmp=null;
    }
    if(isset($data[$id])){
        $tmpresult['title']=$data[$id]['title'];
        $tmp[]=$tmpresult;
        getBreadNav($data,$data[$id]['pid'],$mark=2);
    }
    return $tmp;
}

이것은 루프의 시작입니다.

for($i=0;$i<5;$i++){
    getBreadNav($data,3);
}

참고할 사항 예, 매뉴얼에는 명확한 지침이 있습니다. 함수에서 정적 변수를 unset()하면 이 정적 변수는 함수 내에서 삭제됩니다. 그러나 이 함수가 다시 호출되면 이 정적 변수는 마지막으로 삭제되기 전의 값으로 복원됩니다. 따라서 여기서 해야 할 일은 이를 지우고 null에 할당하는 것입니다.

참고: 함수에서

unset()의 동작은 삭제하려는 변수 유형에 따라 달라집니다.

함수에서 전역 변수를 unset()하면 지역 변수만 소멸되고 호출 환경의 변수는 unset()을 호출하기 전과 동일한 값을 유지합니다.

정적 변수를 등록 취소하려면 재정의해야만 삭제할 수 있습니다.

관련 권장 사항:

php training

위 내용은 PHP에서 정적 변수를 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.