Maison > Article > développement back-end > Introduction d'un exemple de mécanisme de récupération de place PHP
<?php $a = "new string"; ?>
Dans l'exemple ci-dessus, la nouvelle variable a est générée dans la portée actuelle. Et un conteneur de variables de type chaîne et de valeur nouvelle chaîne est généré. Dans les deux octets d'informations supplémentaires, « is_ref » est défini sur FALSE par défaut car aucune référence personnalisée n'est générée.
"refcount" est défini sur 1 car il n'y a qu'une seule variable utilisant ce conteneur de variables. Notez que lorsque la valeur de "refcount" est 1, la valeur de "is_ref" est toujours FALSE si vous avez installé. Avec » Xdebug, vous pouvez afficher les valeurs de « refcount » et « is_ref » en appelant la fonction xdebug_debug_zval().
Exemple n°2 Afficher les informations zval
<?php xdebug_debug_zval('a'); ?>
La routine ci-dessus affichera :
a: (refcount=1, is_ref=0)='new string'
L'attribution d'une variable à une autre variable augmentera le nombre de références (refcount).
Exemple n°3 Augmenter le nombre de références d'un zval
<?php $a = "new string"; $b = $a; xdebug_debug_zval( 'a' ); ?>
La routine ci-dessus affichera :
a: (refcount=2, is_ref=0)='new string'
À ce moment, le nombre de références est de 2, car le même conteneur de variables est utilisé par l'association des variables a et variable b. PHP ne copiera pas le conteneur de variables généré lorsque cela n'est pas nécessaire.
Le conteneur de variables est détruit lorsque "refcount" devient 0. Lorsqu'une variable associée à un conteneur de variables quitte sa portée (par exemple : l'exécution de la fonction se termine), ou que la fonction non définie est appelée sur la variable () , "refcount" sera réduit de 1, comme le montre l'exemple suivant :
Exemple n°4 Diminuer le nombre de références
<?php $a = "new string"; $c = $b = $a; xdebug_debug_zval( 'a' ); unset( $b, $c ); xdebug_debug_zval( 'a' ); ?>
La routine ci-dessus affichera :
a: (refcount=3, is_ref=0)='new string' a: (refcount=1, is_ref=0)='new string'
If nous exécutons maintenant unset($a);, ce conteneur de variables contenant le type et la valeur sera supprimé de la mémoire.
Recommandations associées :
Tutoriel vidéo PHP : https://www.php.cn/course/list/29/type/2.html
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!