Home > Article > Backend Development > How to delete static variables in php
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.
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!