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 variablezval
, en plus de contenir le type et la valeur de la variable, comprend également两个字节
informations supplémentaires. Le premier est"is_ref"
, qui est unbool值
, 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"
est1
, la valeur de "is_ref" est toujoursFALSE
.
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 :
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!