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 transmettez une variable à une fonction en PHP, la fonction reçoit une copie de la valeur de cette variable. Cela signifie que les modifications effectuées à l’intérieur de la fonction n’affectent pas la variable originale en dehors 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 plutôt qu’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 renvoyé depuis la fonction. Le paramètre &$number crée un lien direct vers la variable $value d’origine, ce qui permet à la fonction de la modifier directement.

Cette technique est particulièrement utile lorsque vous devez faire modifier plusieurs variables par une fonction ou lorsque vous travaillez avec de grandes structures de données pour lesquelles la copie serait inefficace.

challenge icon

Défi

Facile

Créez une fonction appelée updateInventory qui prend trois paramètres : une référence vers une variable de quantité, une quantité à ajouter et une quantité à retirer. La fonction doit modifier la quantité d’origine en ajoutant la première quantité et en soustrayant la seconde.

Vous recevrez trois entrées : la quantité initiale, la quantité à ajouter et la quantité à retirer. Lisez les trois entrées, créez une variable contenant la quantité initiale, appelez la fonction updateInventory en lui transmettant la quantité par référence ainsi que les quantités à ajouter et à retirer, puis 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 la quantité à ajouter (un nombre), la troisième ligne contient la quantité à retirer (un nombre)

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

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 quantity
$quantity = $initialQuantity;

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

// TODO: Appeler la fonction updateInventory avec quantity 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

Entraînez-vous par vous-même : Compilateur PHP en ligne