Maison >développement back-end >tutoriel php >Introduction d'un exemple de mécanisme de récupération de place PHP

Introduction d'un exemple de mécanisme de récupération de place PHP

尚
avant
2020-03-23 09:16:233418parcourir

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(&#39;a&#39;);
?>

La routine ci-dessus affichera :

a: (refcount=1, is_ref=0)=&#39;new string&#39;

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( &#39;a&#39; );
?>

La routine ci-dessus affichera :

a: (refcount=2, is_ref=0)=&#39;new string&#39;

À 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( &#39;a&#39; );
unset( $b, $c );
xdebug_debug_zval( &#39;a&#39; );
?>

La routine ci-dessus affichera :

a: (refcount=3, is_ref=0)='new string'
a: (refcount=1, is_ref=0)=&#39;new string&#39;

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer