search
HomeBackend DevelopmentPHP ProblemHow to delete static variables in php

How to delete static variables in php

Sep 27, 2020 pm 05:38 PM
phpstatic variable

How to delete static variables in php: You can delete them by redefining them, such as [$temp = null]. You cannot use the unset() function to delete static variables, because this function only destroys local variables.

How to delete static variables in php

PHP sets a static variable. If you need to destroy this static variable, there is something you need to pay attention to. If you use unset($tmp) to delete it, then you You will find one thing, such as a recursive function, which needs to set a static variable, and then this recursive function needs to be used in foreach(). When the recursive function is executed for the first time, the value needs to be cleared. If using unset() has no effect, after consulting the information, I found that $tmp=null should be used.

(Recommended tutorial: php video tutorial)

The data prototype is an array;

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

Use 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;
}

Assign null to the variable:

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;
}

This is the beginning of the loop:

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

It should be noted that there are clear instructions in the manual: If you unset() a static variable in a function, then in This static variable inside the function will be destroyed. However, when this function is called again, this static variable will be restored to the value it had before it was last destroyed. So what we need to do here is to clear it and assign it to null.

Note:

The behavior of unset() in the function will vary depending on the type of variable you want to destroy.

If you unset() a global variable in a function, only the local variable will be destroyed, and the variables in the calling environment will maintain the same value before calling unset().

If we want to unregister a static variable, it can only be cleared by redefining it.

Related recommendations: php training

The above is the detailed content of How to delete static variables in php. For more information, please follow other related articles on the PHP Chinese website!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools