La différence entre le passage de valeur et le passage de référence en PHP
Le passage de variable par valeur signifie : "passer" la valeur d'un variable à une autre variable.
Il n'existe que deux manières de transférer des données : le transfert de valeur et le transfert de référence. Par défaut, PHP utilise le passage de valeurs.
Regardons les différences entre ces deux modes de livraison :
Livraison en valeur :
C'est-à-dire copier la "valeur de données" de la variable de droite elle-même, puis attribuez-la à la variable de gauche
Pendant le processus de transmission par valeur, les paramètres formels de la fonction appelée sont utilisés comme locaux. parties de la fonction appelée. Le traitement des variables signifie ouvrir de l'espace mémoire sur la pile pour stocker la valeur du paramètre réel saisi par la fonction appelante, devenant ainsi une copie du paramètre réel. La caractéristique du transfert de valeur est que toute opération de la fonction appelée sur les paramètres formels est effectuée comme une variable locale et n'affectera pas la valeur de la variable paramètre réelle de la fonction appelante.
Exemple :
$v1 = 1; $v2 = $v1;
Une fois la valeur passée, les deux variables n'ont aucune influence l'une sur l'autre et sont indépendantes l'une de l'autre
<?php //值传递 $v1 = 10; $v2 = $v1; echo "v2的值为:".$v2;//10 $v1 = 11; echo "<br>v2的值为:".$v2;//10
Passer par référence :
consiste à transmettre la relation de référence de la variable de droite aux données à la variable de gauche
Pendant le processus de passage par référence, bien que les paramètres formels de la fonction appelée ouvrent également de l'espace mémoire sur la pile en tant que variables locales, ce qui est stocké à ce moment-là est l'adresse de la variable paramètre réelle saisie par la fonction appelante. . Toute opération de la fonction appelée sur les paramètres formels est traitée comme un adressage indirect, c'est-à-dire que les variables de paramètre réelles dans la fonction appelante sont accessibles via l'adresse stockée dans la pile. Pour cette raison, toute opération effectuée par la fonction appelée sur les paramètres formels affecte la fonction appelante.
<?php //引用传递 $v1 = 10; $v2 = &$v1; echo "v2的值为:".$v2;//10 $v1 = 11; echo "<br>v2的值为:".$v2;//11
Résumé :
La principale chose examinée ici est similaire au passage par valeur . Question citée. Comprenez que transmettre une valeur revient à rouvrir l'espace mémoire, ce qui équivaut à copier la valeur d'origine, et cela est indépendant de la valeur d'origine. Passer une référence (pointeur) ajoute uniquement un pointeur vers le bloc mémoire d'origine. Si la valeur de la référence change, la valeur de l'adresse mémoire pointée est modifiée et toutes les références pointées ont changé.
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!