/ / PHP supprime la "référence" d'une variable. - php, variables, référence

PHP supprime la "référence" d'une variable. - php, variables, référence

J'ai le code ci-dessous. Je veux changer $ b pour le réutiliser avec des valeurs. Si je le fais, cela change également $ a. Comment puis-je attribuer à nouveau une valeur à $ b après l'avoir affectée précédemment en tant que référence à $ a?

$a = 1;
$b = &$a;

// later
$b = null;

Réponses:

12 pour la réponse № 1

Voir explication en ligne

$a = 1;
$b = &$a; Maintenant, $ b et $ a deviennent la même variable avec seulement 2 noms différents
unset($b); $ b nom est parti, a disparu du contexte mais $ a est toujours disponible
$b = 2; Maintenant, $ b est comme une nouvelle variable avec une nouvelle valeur. Commencer une nouvelle vie.


7 pour la réponse № 2
$a = 1;
$b = &$a;

unset($b);
// later
$b = null;

5 pour la réponse № 3

La réponse de @xdazz est correcte, mais il suffit d’ajouter l’excellent exemple suivant tiré du Manuel PHP ce qui donne un aperçu de ce que PHP fait sous le capot.

Dans cet exemple, vous pouvez voir que $bar dans la fonction foo () est une référence statique à une variable de portée de la fonction.

Déroute $bar supprime la référence mais ne libère pas la mémoire:

<?php
function foo()
{
static $bar;
$bar++;
echo "Before unset: $bar, ";
unset($bar);
$bar = 23;
echo "after unset: $barn";
}

foo();
foo();
foo();
?>

L'exemple ci-dessus affichera:

Before unset: 1, after unset: 23
Before unset: 2, after unset: 23
Before unset: 3, after unset: 23

3 pour la réponse № 4

Tout d’abord: créer une référence à partir de $a à $b crée une connexion (faute d'un meilleur mot) entre les deux variables, donc $a changer quand $b changements est exactement la façon dont il est censé fonctionner.

Donc, en supposant que vous vouliez casser la référence, le plus simple est de

unset($b);
$b="new value";