Comment supprimer des variables statiques en PHP : Vous pouvez les supprimer en les redéfinissant, comme [$temp = null]. Vous ne pouvez pas utiliser la fonction unset() pour supprimer des variables statiques, car cette fonction détruit uniquement les variables locales.
PHP définit une variable statique. Si vous devez détruire cette variable statique, il y a quelque chose à noter. Si vous utilisez unset($tmp) pour la supprimer, alors vous trouverez une chose, comme une fonction récursive, qui doit définir une variable statique, puis cette fonction récursive doit être utilisée dans foreach(). Lorsque la fonction récursive est exécutée pour la première fois, la valeur est nécessaire. à effacer. Si l'utilisation de unset() n'a aucun effet, après avoir consulté les informations, j'ai trouvé que $tmp=null devait être utilisé.
(Tutoriel recommandé : Tutoriel vidéo php)
Le prototype de données est un tableau
$data=[ '1'=>[ 'pid'=>0, 'title'=>'test1' ], '2'=>[ 'pid'=>1, 'title'=>'test2' ], '3'=>[ 'pid'=>2, 'title'=>'test3' ], ];
Utiliser 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; }
Attribuez null à la 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; }
C'est le début de la boucle :
for($i=0;$i<5;$i++){ getBreadNav($data,3); }
Il est à noter qu'il y a des instructions claires dans le manuel : Si vous unset() un static variable dans une fonction, puis dans Cette variable statique à l'intérieur de la fonction sera détruite. Cependant, lorsque cette fonction est à nouveau appelée, cette variable statique sera restaurée à la valeur qu'elle avait avant sa dernière destruction. Ce que nous devons donc faire ici, c'est l'effacer et lui attribuer la valeur null.
Remarque :
Le comportement de unset() dans une fonction varie en fonction du type de variable que vous souhaitez détruire.
Si vous annulez() une variable globale dans une fonction, seule la variable locale sera détruite et les variables de l'environnement appelant conserveront la même valeur avant d'appeler unset().
Si nous voulons désenregistrer une variable statique, elle ne peut être effacée qu'en la redéfinissant.
Recommandations associées : formation php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!