Maison  >  Article  >  développement back-end  >  Que sont les variables de référence PHP ? Exemple d'explication des variables de référence php

Que sont les variables de référence PHP ? Exemple d'explication des variables de référence php

不言
不言original
2018-09-08 15:47:562463parcourir

Que sont les variables de référence PHP ? Comment définir des variables de référence ? Cet article présentera brièvement les concepts de base et les méthodes de travail des variables de référence en PHP à partir de l'espace mémoire, ainsi qu'un exemple courant.

Concept

Qu'est-ce qu'une variable de référence ? En PHP, quels symboles sont utilisés pour définir les variables de référence ?

Des noms différents accèdent au même contenu de variable, utilisez & exprimer.

COW (copie en écriture)

Méthode courante d'optimisation de la mémoire, cette méthode est également utilisée en PHP pour optimiser la mémoire.

Copie en écriture, c'est-à-dire que seulement lorsqu'une ou plusieurs variables sont écrites, une copie de la mémoire sera copiée et son contenu sera modifié.

Utilisez memory_get_usage() en PHP pour observer les changements de mémoire

Démo

Inutilisé & (variable de référence)

        $a = range(0,1000);
        var_dump(memory_get_usage());
        $b = $a;`
        var_dump(memory_get_usage());
        $a = range(0,1000);
        var_dump(memory_get_usage());

Résultats d'exécution :

Que sont les variables de référence PHP ? Exemple dexplication des variables de référence php

Il n'y a pas beaucoup de différence de mémoire entre la première et la deuxième fois, mais la troisième fois produit une différence plus grande

en utilisant &

        $a = range(0,1000);
        var_dump(memory_get_usage());
        $b = &$a;
        var_dump(memory_get_usage());
        $a = range(0,1000);
        var_dump(memory_get_usage());

Résultats en cours d'exécution :

Que sont les variables de référence PHP ? Exemple dexplication des variables de référence php

en utilisant la passe de référence- analyse d'analyse de la mémoire par valeur :

Que sont les variables de référence PHP ? Exemple dexplication des variables de référence php

$a occupe un espace mémoire en mémoire lorsqu'il est attribué et lorsque $b=&$a pointe vers $b Dans le même espace mémoire, lorsque $a change, l'espace mémoire occupé par $b suivra le changement de $a

unset

ne fera que déréférencer et non. détruire l'espaceunset()

$a=1;
$b=&$a;
unset($b);
echo $a;
Résultat de sortie :

1

Analyse de l'espace mémoire :


Que sont les variables de référence PHP ? Exemple dexplication des variables de référence php

$a Après avoir été attribués $b=&$a, $a et $b vont directement dans le même espace mémoire Lorsqu'ils ne sont pas définis($b), la référence de $b à $a est annulée, de sorte que $b non. pointe plus vers l'espace mémoire de $a

Digression

L'objet lui-même est passé par référence

class Person
{
    public $name="zhangsan";
}
$p1 =new Person;
xdebug_debug_zval('p1');
$p2 =$p1;
xdebug_debug_zval('p1');
$p2->name="lisi";
xdebug_debug_zval('p1');
Résultats d'exécution :

Que sont les variables de référence PHP ? Exemple dexplication des variables de référence php

Analyse du résultat :

Que sont les variables de référence PHP ? Exemple dexplication des variables de référence php

Une fois l'objet instancié et passé par référence,
$p1 pointe toujours vers le même espace mémoire $p2
cas

     <?php     
     $data = [&#39;a&#39;, &#39;b&#39;, &#39;c&#39;];
    
     foreach($data as $key => $val)
     {
          $val = &$data[$key];
     }
    var_dump($data);
Écrire le résultat de sortie du programme ci-dessus ?

Lorsque le programme est en cours d'exécution, quelle est la valeur de la variable $data après la fin de chaque boucle ?
Une fois l'exécution du programme terminée, quelle est la valeur de la variable $data ?

Modifications et analyse de la mémoire :

Que sont les variables de référence PHP ? Exemple dexplication des variables de référence php

Recommandations associées :

Référence de variable php et référence d'objet Introduction détaillée_Tutoriel PHP

Introduction détaillée à la référence de variable php et à la référence d'objet

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:
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