PHP Attribuer par référence


Exemple

C'est la première phase du référencement. Essentiellement, lorsque vous attribuez par référence , vous permettez à deux variables de partager la même valeur.

$foo = &$bar;

$foo et $bar sont égaux ici. Ils ne se pointent pas les uns les autres. Ils indiquent le même endroit ( la "valeur" ).


Vous pouvez également affecter par référence dans la construction de langage array() . Bien que n'étant pas strictement une cession par référence.

$foo = 'hi';
$bar = array(1, 2);
$array = array(&$foo, &$bar[0]);

Notez cependant que les références dans les tableaux sont potentiellement dangereuses. Faire une affectation normale (pas par référence) avec une référence sur le côté droit ne transforme pas le côté gauche en référence, mais les références dans les tableaux sont conservées dans ces affectations normales. Cela s'applique également aux appels de fonction où le tableau est transmis par valeur.

L'affectation par référence n'est pas seulement limitée aux variables et aux tableaux, elle est également présente pour les fonctions et toutes les associations "pass-by-reference".

function incrementArray(&$arr) {
    foreach ($arr as &$val) {
        $val++;
    }
}

function &getArray() {
    static $arr = [1, 2, 3];
    return $arr;
}

incrementArray(getArray());
var_dump(getArray()); // prints an array [2, 3, 4]

L'affectation est la clé dans la définition de la fonction comme ci-dessus. Vous ne pouvez pas transmettre une expression par référence, uniquement une valeur / variable. D'où l'instanciation de $a in bar() .