Pasaje por valor y por referencia en PHP


Lección 14 / 24

Pasaje por valor y por referencia en PHP

Php Desarrollador Php Curso php

En los ejemplos anteriores pasamos a las funciones de variables, que recordemos son ubicaciones de memoria que contienen datos. Si intentáramos cambiar el contenido de una variable declarada externamente usando una función, ¿qué pasaría?
Vamos a verlo.

<?php

    $num=7;

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

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

  
//En output tendremos:

//7
//8
//7

?>

Como podemos ver en el resultado, cuando, fuera de la función, le pedimos al comando php echo (Segundo eco) que nos mostrara qué hay en la variable $ num después de la función, el resultado fue idéntico a lo que nos mostró el eco antes de la llamada a la función (Antes del eco). Esto sucedió porque, en este caso, al llamar a la función, le pasamos variables por valor (es decir, una copia).

Por lo tanto, hay dos formas diferentes de pasar parámetros a una función "por valor y por referencia"

  • Por valor: estamos pasando y manipulando una copia de la variable presente en la ubicación de memoria
  • Por referencia: solo estamos pasando el contenido de la ubicación de la memoria sin hacer una copia primero

El paso por valor al código se produce a través de un "&" colocado al lado del parámetro formal de la función

<?php
   $num=7;

   function changeValue(&$number){
     echo ++$number."\n";//Incrementa el valor de $number de un
   }
     echo $num."\n";//Primer echo

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

    //En output tendremos:

    //7
    //8
    //8

?>

Ahora el eco php inmediatamente debajo de la llamada a la función (Segundo echo) nos muestra un resultado diferente al echo anterior a la llamada a la función (Primer echo) porque la función cambió el interior de la ubicación de la memoria a diferencia de la función de la que recibe una copia del contenido de La variable.

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad