Pasaje por valor y por referencia en PHP
Lección 14 / 24
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.
Anterior
13 El alcance en PHPSiguiente
15 Funciones dinámicas..