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.
Sfida
FacileCrea 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;
?>Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Funzioni avanzate
Funzioni anonimeClosure e 'use'Funzioni frecciaFunzioni callbackUso di 'call_user_func'Funzioni variabiliPassaggio per riferimentoFunzioni ricorsiveRiepilogo: carrellata di funzioni4Array multidimensionali
Creare un array 2DAccedere agli elementi di un array 2DModificare gli elementi di un array 2DIterare con cicli annidatiArray associativi 2DRipasso: esercizio con una griglia semplice2Manipolazioni avanzate degli array
Aggiungere con 'array_push'Rimuovere con 'array_pop'Aggiungere con 'array_unshift'Rimuovere con 'array_shift'Unire array indicizzatiUnire array associativiEstrarre con 'array_slice'Valori con 'in_array'Chiavi con 'array_search'Riepilogo: esercizio playlist3Ordinare gli array
Ordina gli array indicizzati in ordine crescenteOrdina gli array indicizzati in ordine decrescenteOrdina gli array associativi per valoreOrdina gli array associativi per chiaveOrdinamento naturaleOrdinamento personalizzato con 'usort'Ripasso: ordinamento della classificaEsercitati da solo: Compilatore PHP online