Quelles sont les variables de référence PHP ? Variables de référence exemple explication de PHP

Source : Internet
Auteur : utilisateur
Quelles sont les variables de référence PHP ? Comment définir les variables de référence ? Cet article décrit brièvement les concepts de base, méthodes de travail et un exemple commun de variables de référence en PHP de l’espace mémoire.

Concept

Ce qui est une variable de référence, et en PHP, ce symbole est utilisé pour définir la variable de référence ?

Différents noms d’accès la même variable contenue, exprimée dans l’utilisation de l’Express.

VACHE (copie à l’écriture)

Un outil commun pour l’optimisation de la mémoire, qui est également utilisé en PHP pour optimiser la mémoire.

Copier lors de l’écriture, c’est seulement quand un ou plusieurs de ces variables sont écrits, une copie du mémoire est copiée et modifié son contenu.

Memory_get_usage () permet d’observer les changements de mémoire en PHP

Démontrer

Ne pas utiliser le % (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 en cours d’exécution :

Mémoire ne diffère pas beaucoup dans la première et deuxième fois, ce qui entraîne une grande différence pour la troisième fois

L’utilisation de la

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

Dans l’utilisation de mémoire de passage-valeur de référence l’analyse analyse :

$aOccupe un espace de mémoire en mémoire lorsqu’une valeur assignée,$b=&$aQuand$bPointez sur le même espace mémoire quand$aLorsqu’un changement se produit$bL’espace mémoire occupé suivra$achangement

Unset

unset()Déréférence nul seulement ne détruit pas l’espace

$a=1;$b=&$a;unset($b);echo $a;

Résultat de la sortie :1

Analyse de l’espace mémoire :

Après le $a est assigné $b = & $a, $a et $b aller tout droit pour le même espace mémoire, et lorsque unset ($b), référence de $b à $a est annulé pour que n’est pas dans l’espace mémoire pointant vers $a $b

Extrinsèques

L’objet lui-même est un col de 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 en cours d’exécution :

Analyse des résultats :

Après qu’un objet est passé par référence, après une instance $p1 $p2Pointant toujours vers le même espace mémoire

Cas

     <?php         $data = ['a', 'b', 'c'];         foreach($data as $key => $val)     {          $val = &$data[$key];     }    var_dump($data);

Écrire la sortie du programme comme ci-dessus ?
Lorsque le programme s’exécute, quelle est la valeur de la variable $data à la fin de chaque boucle ?
Quelle est la valeur de la variable $data après que l’exécution du programme est terminée ?

Modifications de la mémoire et l’analyse :

Article associé

Nous contacter

Le contenu de cette page provient d'Internet et ne reflète pas l'opinion d'Alibaba Cloud ; les produits et services mentionnés sur cette page n'ont aucune relation avec Alibaba Cloud. Si le contenu de la page vous semble problématique, veuillez nous écrire un courriel, nous traiterons le problème dans les 5 jours suivant la réception de votre message.

Si vous constatez des cas de plagiat de la part de la communauté, veuillez envoyer un courriel à : info-contact@alibabacloud.com et fournir des preuves pertinentes. Un membre de notre équipe vous contactera dans les 5 jours ouvrables.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.