Passaggio per valore e per riferimento in PHP


Lezione 14 / 24

Passaggio per valore e per riferimento in PHP

Di Alessandro Leo


php corso php sviluppatore php

 Negli esempi precedenti abbiamo passato alle funzioni delle variabili, che ricordiamo essere delle locazioni di memoria che contengono dei dati. Se provassimo a modificare il contenuto di una variabile dichiarata esternamente utilizzando una funzione, cosa succederebbe? 
Vediamolo.

<?php

    $num=7;

   function changeValue($number){
      echo ++$number."\n";
   }
      echo $num."\n";//Prima echo

   changeValue($num);
      echo $num."\n";//Seconda echo

  
//In output avremo:

//7
//8
//7

?>


Come possiamo notare dal risultato, nel momento in cui, esternamente alla funzione, abbiamo chiesto al comando php echo (Seconda echo) di mostrarci cosa c'è nella variabile $num dopo la function, il risultato è stato identico a quello che ci ha mostrato l'echo prima della chiamata della funzione (Prima echo). Questo è successo perché, in questo caso, richiamando la funzione, le abbiamo passato delle variabili per valore (vale a dire una copia).

Esistono quindi due diverse modalità di passaggio dei parametri a una funzione "per valore e per riferimento"

  • Per valore: stiamo passando e manipolando una copia della variabile presente nella locazione di memoria
  • Per riferimento: stiamo passando proprio il contenuto della locazione di memoria senza farne prima una copia

Il passaggio per valore a codice avviene tramite un "&" posta vicino al parametro formale della funzione
 

<?php
   $num=7;

   function changeValue(&$number){
     echo ++$number."\n";//Incrementa il valore di $number di uno
   }
     echo $num."\n";//Prima echo

   changeValue($num);
     echo $num."\n";//Seconda echo

    //In output avremo:

    //7
    //8
    //8

?>


Adesso il php echo immediatamente sotto la chiamata della funzione (Seconda echo) ci mostra un risultato diverso rispetto all'echo prima della chiamata della funzione (Prima echo) perché la funzione ha modificato l'interno della locazione di memoria a differenza della funzione che riceve una copia del contenuto della variabile. 

Scopri i corsi

Le nostre guide possono essere molto utili per muovere i primi passi nel mondo della programmazione, ma se vuoi iniziare una nuova carriera in ambito digital & tech con il supporto costante dei docenti e tantissime esercitazioni pratiche, ti consigliamo di frequentare uno dei corsi della nostra Hackademy!

Scopri i corsi