Maison >développement back-end >tutoriel php >Comment PHP gère-t-il le passage et l'affectation de tableaux par référence ?

Comment PHP gère-t-il le passage et l'affectation de tableaux par référence ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-10 10:14:20752parcourir

How Does PHP Handle Array Passing and Assignment by Reference?

Passer des arguments et attribuer des tableaux en PHP

Les tableaux, une structure de données cruciale en PHP, sont généralement transmis à des fonctions ou affectés à des variables. Cependant, il est essentiel de comprendre comment ces opérations affectent leurs références sous-jacentes.

Tableaux comme arguments de fonction

Lorsqu'un tableau est passé en argument à une fonction, il est par défaut passé en copie. Cela signifie que la fonction opère sur la copie elle-même, sans modifier le tableau d'origine. Supposons que la fonction apporte des modifications au tableau ; ces modifications ne seront pas reflétées dans le tableau d'origine en dehors de la fonction, à moins que la fonction ne soit explicitement invitée à fonctionner par référence.

function my_func($a) {
    $a[] = 30;
}

$arr = array(10, 20);
my_func($arr);
var_dump($arr); // Output: array(10, 20)

Pour passer le tableau par référence et permettre à la fonction de modifier le tableau d'origine, la fonction doit être déclarée comme :

function my_func(& $a) {
    $a[] = 30;
}

Maintenant, les modifications apportées au sein de la fonction seront reflétées dans le tableau d'origine en dehors du fonction.

Attribution de tableaux

Lors de l'attribution d'un tableau à une nouvelle variable, l'affectation crée une nouvelle copie du tableau, sauf si l'opérateur de référence & est utilisé. Cela signifie que le tableau d'origine et la variable nouvellement attribuée sont séparés et que les modifications apportées à l'un n'affecteront pas l'autre.

$a = array(1, 2, 3);
$b = $a;
$b[] = 4;
// $a still contains the original array (1, 2, 3)

Pour attribuer par référence, l'opérateur de référence & doit être utilisé :

$a = array(1, 2, 3);
$b = & $a;
$b[] = 4;
// Both $a and $b now contain (1, 2, 3, 4)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn