Les références en PHP
En PHP, il est possible d'assigner la valeur d'une variable à une autre :
<?php
$num1 = 1;
$num2 = $num1; // assignation
echo $num1; // 1
echo $num2; // 1
?>
Lors d'une telle assignation, une copie de la valeur de la première variable est enregistrée dans la nouvelle variable. Cela signifie que les variables ne sont en aucun cas liées l'une à l'autre et qu'elles peuvent être modifiées indépendamment. Regardez l'exemple de code :
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1; // 1 - n'a pas changé
?>
Il est cependant possible de faire en sorte que ce ne soit pas la valeur de la variable qui soit copiée, mais une référence vers celle-ci. Dans ce cas, lors de la modification de la valeur d'une variable, la valeur de l'autre sera également modifiée.
Pour passer la valeur par référence, il faut placer une esperluette devant le nom de la variable :
<?php
$num1 = 1;
$num2 = &$num1; // passage par référence
?>
Désormais, la modification de la première variable entraînera également la modification de la seconde :
<?php
$num1 = 1;
$num2 = &$num1;
$num2 = 2;
echo $num1; // 2 - a changé
?>
De même, si nous modifions la première variable, la seconde changera également :
<?php
$num1 = 1;
$num2 = &$num1;
$num1 = 2;
echo $num2; // 2
?>
Expliquez quel sera le résultat de l'exécution du code :
<?php
$num1 = 1;
$num2 = $num1;
$num2 = 2;
echo $num1;
echo $num2;
?>
Expliquez quel sera le résultat de l'exécution du code :
<?php
$num1 = 1;
$num2 = &$num1;
$num2++;
echo $num1;
echo $num2;
?>
Expliquez quel sera le résultat de l'exécution du code :
<?php
$num1 = 1;
$num2 = $num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>
Expliquez quel sera le résultat de l'exécution du code :
<?php
$num1 = 1;
$num2 = &$num1;
$num1++;
$num2++;
echo $num1;
echo $num2;
?>