Maison  >  Article  >  développement back-end  >  Explication du passage par valeur et référence en php

Explication du passage par valeur et référence en php

小云云
小云云original
2018-03-29 10:03:381293parcourir

Cet article partage principalement avec vous l'explication du transfert de valeur et de la référence en PHP. Il est principalement partagé avec vous sous forme de texte. J'espère qu'il pourra aider tout le monde.

Introduction :

Chaque variable php existe dans un conteneur de variables appelé "zval". Un conteneur de variable zval, en plus de contenir le type et la valeur de la variable, comprend également 两个字节 informations supplémentaires. Le premier est "is_ref", qui est un bool值, utilisé pour identifier si cette variable appartient à 引用集合 (jeu de références). Grâce à cet octet, le moteur PHP peut distinguer les variables ordinaires des variables de référence. Puisque PHP permet aux utilisateurs d'utiliser des références personnalisées en utilisant &, il existe également un 内部引用计数机制 dans le conteneur de variables zval pour optimiser l'utilisation de la mémoire. Le deuxième octet est "refcount", qui est utilisé pour représenter le nombre de variables (également appelées symboles) dans le conteneur de variables zval 指向. Lorsque la valeur de "refcount" est 1, la valeur de "is_ref" est toujours FALSE.

Exemple :

<?php$a = 10;
//将常量值赋给变量,会为a分配内存空间$b = $a;
//变量赋值给变量,给b分配了内存空间,并将a变量的类型和值复制一份存储到b的存储空间 $c = &$a;
//引用是不会为c分配空间的,c和a是共用一份内存空间数据。

PHP sera a Lorsqu'une variable est affectée à une nouvelle variable, la nouvelle variable ne se verra pas immédiatement attribuer d'espace mémoire, mais une référence à l'espace mémoire sera ajoutée. Lorsque des modifications sont apportées à la variable d'origine ou à la nouvelle variable, un espace mémoire sera alloué à la nouvelle variable.

Recommandations associées :

Quelle est la différence entre le passage de valeur ordinaire et le passage de valeur de référence dans les fonctions PHP

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