How to delete static variables in php

王林
Release: 2023-03-06 06:26:01
Original
2983 people have browsed it

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'
    ],
];
Copy after login

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;
}
Copy after login

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;
}
Copy after login

This is the beginning of the loop:

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

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!