Comment supprimer des variables statiques en php

王林
Libérer: 2023-03-06 06:26:01
original
3166 Les gens l'ont consulté

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.

Comment supprimer des variables statiques en php

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'
    ],
];
Copier après la connexion

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;
}
Copier après la connexion

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;
}
Copier après la connexion

C'est le début de la boucle :

for($i=0;$i<5;$i++){
    getBreadNav($data,3);
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal