Maison >développement back-end >tutoriel php >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 ? 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.
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
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 :
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 :
en utilisant la passe de référence- analyse d'analyse de la mémoire par valeur :
$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
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
$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 $aDigressionL'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 :
Analyse du résultat :
Une fois l'objet instancié et passé par référence,
cas$p1
pointe toujours vers le même espace mémoire$p2
<?php $data = ['a', 'b', 'c']; 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 ?
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!