Menu
Coddy logo textTech

Passage par référence

Fait partie de la section Logique & Flux du Journey PHP de Coddy — leçon 7 sur 68.

Par défaut, lorsque vous passez une variable à une fonction en PHP, la fonction reçoit une copie de la valeur de cette variable. Cela signifie que toute modification effectuée à l'intérieur de la fonction n'affecte pas la variable d'origine à l'extérieur de la fonction.

Cependant, vous souhaitez parfois qu'une fonction modifie directement la variable d'origine. C'est là qu'intervient le passage par référence. En ajoutant une esperluette (&) avant le nom du paramètre dans la définition de votre fonction, vous indiquez à PHP de transmettre la variable réelle au lieu d'une copie :

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // Affiche : 20
?>

Remarquez comment $value est passé de 10 à 20 même si nous n'avons rien retourné de la fonction. Le paramètre &$number crée un lien direct vers la variable $value d'origine, permettant à la fonction de la modifier directement.

Cette technique est particulièrement utile lorsque vous avez besoin qu'une fonction modifie plusieurs variables ou lorsque vous travaillez avec de grandes structures de données où la copie serait inefficace.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

challenge icon

Défi

Facile

Créez une fonction appelée updateInventory qui prend trois paramètres : une référence à une variable de quantité, un montant à ajouter et un montant à retirer. La fonction doit modifier la quantité d'origine en ajoutant le premier montant et en soustrayant le second montant.

Vous recevrez trois entrées : la quantité initiale, le montant à ajouter et le montant à retirer. Lisez les trois entrées, créez une variable avec la quantité initiale, appelez la fonction updateInventory en passant la quantité par référence ainsi que les montants à ajouter et à retirer, et affichez la quantité mise à jour.

Format d'entrée : Trois lignes - la première ligne contient la quantité initiale (un nombre), la deuxième ligne contient le montant à ajouter (un nombre), la troisième ligne contient le montant à retirer (un nombre)

Sortie attendue : La quantité mise à jour après l'ajout et le retrait

Aide-mémoire

Par défaut, PHP passe les variables aux fonctions par valeur (une copie). Pour modifier la variable originale, utilisez le passage par référence en ajoutant une esperluette (&) avant le nom du paramètre :

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // Affiche : 20
?>

Le paramètre &$number crée un lien direct vers la variable originale, permettant à la fonction de la modifier sans retourner de valeur. Ceci est utile pour modifier plusieurs variables ou travailler efficacement avec de grandes structures de données.

Essayez vous-même

<?php
// Lire les entrées
$initialQuantity = intval(fgets(STDIN));
$amountToAdd = intval(fgets(STDIN));
$amountToRemove = intval(fgets(STDIN));

// Créer la variable de quantité
$quantity = $initialQuantity;

// TODO : Créer la fonction updateInventory ici qui prend un paramètre par référence

// TODO : Appeler la fonction updateInventory avec la quantité par référence

// Afficher la quantité mise à jour
echo $quantity;
?>
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux