Menu
Coddy logo textTech

Passaggio per riferimento

Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 7 di 68.

Per impostazione predefinita, quando passi una variabile a una funzione in PHP, la funzione riceve una copia del valore della variabile. Ciò significa che le modifiche apportate all'interno della funzione non influiscono sulla variabile originale al di fuori della funzione.

Tuttavia, a volte vuoi che una funzione modifichi direttamente la variabile originale. È qui che entra in gioco il passaggio per riferimento. Aggiungendo una e commerciale (&) prima del nome del parametro nella definizione della funzione, dici a PHP di passare la variabile effettiva invece di una copia:

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

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

Nota come $value sia passato da 10 a 20 anche se non abbiamo restituito nulla dalla funzione. Il parametro &$number crea un collegamento diretto alla variabile originale $value, consentendo alla funzione di modificarla direttamente.

Questa tecnica è particolarmente utile quando hai bisogno che una funzione modifichi più variabili o quando lavori con strutture dati di grandi dimensioni, per le quali la copia sarebbe inefficiente.

challenge icon

Sfida

Facile

Crea una funzione chiamata updateInventory che accetta tre parametri: un riferimento a una variabile quantità, una quantità da aggiungere e una quantità da rimuovere. La funzione deve modificare la quantità originale aggiungendo la prima quantità e sottraendo la seconda.

Riceverai tre input: la quantità iniziale, la quantità da aggiungere e la quantità da rimuovere. Leggi tutti e tre gli input, crea una variabile con la quantità iniziale, chiama la funzione updateInventory passando la quantità per riferimento insieme alle quantità da aggiungere e da rimuovere, quindi stampa la quantità aggiornata.

Formato dell'input: Tre righe: la prima riga contiene la quantità iniziale (un numero), la seconda riga contiene la quantità da aggiungere (un numero), la terza riga contiene la quantità da rimuovere (un numero)

Output previsto: La quantità aggiornata dopo l'aggiunta e la rimozione

Provalo tu

<?php
// Leggi i valori di input
$initialQuantity = intval(fgets(STDIN));
$amountToAdd = intval(fgets(STDIN));
$amountToRemove = intval(fgets(STDIN));

// Crea la variabile quantity
$quantity = $initialQuantity;

// TODO: Crea qui la funzione updateInventory che accetta un parametro per riferimento

// TODO: Chiama la funzione updateInventory passando quantity per riferimento

// Stampa la quantità aggiornata
echo $quantity;
?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore PHP online