Passaggio per riferimento o per valore
Parliamo ora di come il PHP passa gli argomenti alle funzioni quando queste vengono chiamate.
Per default tutti i parametri vengono sempre passati per valore ciò vuol dire che al momento della chiamata viene fatta una copia del valore di ogni variabile e solo questa copia viene usata dalla funzione.
Così facendo se all'interno della funzione il valore viene in qualche modo modificato, il cambiamento non si propaga anche dopo la chiamata.
<?php /* funzione di esempio */ function modifica_i_parametri ($p1, $p2) { $p1 = 10; $p2 *= $p1; } /* variabili da modificare */ $a = 5; $b = 7; /* Chiama una funzione che tenta di modificare i parametri ma $a e $b rimangono uguali anche dopo la chiamata perché il passaggio è per valore */ modifica_i_parametri ($a, $b); ?>
Ora, come abbiamo visto, questo può essere utile ma a volte capita di volere che anche la variabile sorgente risenta del cambiamento, come fare quindi?
Basta usare il passaggio per riferimento. Grazie all'operatore & è possibile passare una variabile alla funzione per riferimento.
Se questo operatore viene messo nella dichiarazione della funzione l'operatore verrà passato sempre per riferimento mentre se inserito solo al momento della chiamata starà a noi decidere quando usarlo.
<?php /* funzione che modifica sempre il suo parametro */ function metti10 (&$p) { $p = 10; } /* questa funzione invece non riesce sempre */ function metti100 ($x) { $x = 100; } /* esempi */ $a = 9; metti10 ($a); /* ora $a contiene 10 */ metti100 ($a); /* $a contiene ancora 10 */ metti100 (&$a); /* ora $a contiene 100 visto che abbiamo specificato il passaggio per riferimento */ ?>
-
» 2011-05-28
Come usare i Cookie con PHP -
» 2010-04-24
Sintassi alternativa -
» 2010-04-24
Return -
» 2010-04-24
Break
Se ti piace questo articolo, puoi collegarlo al tuo sito copiando il seguente codice HTML nelle tue pagine.
-
30-06-2011 → Anonimo
ha scritto un commento in
Tutorial sul ripristino di GRUB -
26-05-2011 → Bianca
ha scritto un commento in
Arrotondare gli angoli di un div usando i CSS 3 -
25-05-2011 → `wee`
ha scritto un commento in
Le landing page - Cosa sono e a cosa servono -
19-02-2011 → Anonimo
ha scritto un commento in
Linux Reference - Lista comandi utili per Linux -
06-01-2011 → Sergio
ha scritto un commento in
Ottimizzare i metatag delle pagine multilingua -
05-06-2010 → Anonimo
ha scritto un commento in
SQL - Data Manipulation Language - SELECT
Inserisci un commento: