Menu
Coddy logo textTech

Paso por referencia

Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 7 de 68.

Por defecto, cuando pasas una variable a una función en PHP, la función recibe una copia del valor de esa variable. Esto significa que cualquier cambio realizado dentro de la función no afecta a la variable original fuera de la función.

Sin embargo, a veces quieres que una función modifique la variable original directamente. Aquí es donde entra en juego el paso por referencia. Al agregar un signo de unión (&) antes del nombre del parámetro en la definición de tu función, le indicas a PHP que pase la variable real en lugar de una copia:

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // Salida: 20
?>

Observa cómo $value cambió de 10 a 20 aunque no devolvimos nada de la función. El parámetro &$number crea un enlace directo a la variable $value original, permitiendo que la función la modifique directamente.

Esta técnica es especialmente útil cuando necesitas que una función modifique múltiples variables o cuando trabajas con estructuras de datos grandes donde realizar copias sería ineficiente.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

challenge icon

Desafío

Fácil

Crea una función llamada updateInventory que reciba tres parámetros: una referencia a una variable de cantidad, una cantidad para añadir y una cantidad para eliminar. La función debe modificar la cantidad original sumando la primera cantidad y restando la segunda cantidad.

Recibirás tres entradas: la cantidad inicial, la cantidad a añadir y la cantidad a eliminar. Lee las tres entradas, crea una variable con la cantidad inicial, llama a la función updateInventory pasando la cantidad por referencia junto con las cantidades de adición y eliminación, e imprime la cantidad actualizada.

Formato de entrada: Tres líneas - la primera línea contiene la cantidad inicial (un número), la segunda línea contiene la cantidad a añadir (un número), la tercera línea contiene la cantidad a eliminar (un número)

Resultado esperado: La cantidad actualizada después de añadir y eliminar

Hoja de referencia

Por defecto, PHP pasa las variables a las funciones por valor (una copia). Para modificar la variable original, utiliza el paso por referencia añadiendo un ampersand (&) antes del nombre del parámetro:

<?php
function doubleValue(&$number) {
    $number = $number * 2;
}

$value = 10;
doubleValue($value);
echo $value;  // Salida: 20
?>

El parámetro &$number crea un enlace directo a la variable original, lo que permite a la función modificarla sin devolver un valor. Esto es útil para modificar múltiples variables o trabajar con grandes estructuras de datos de forma eficiente.

Pruébalo tú mismo

<?php
// Leer entradas
$initialQuantity = intval(fgets(STDIN));
$amountToAdd = intval(fgets(STDIN));
$amountToRemove = intval(fgets(STDIN));

// Crear la variable de cantidad
$quantity = $initialQuantity;

// TODO: Crear la función updateInventory aquí que tome un parámetro por referencia

// TODO: Llamar a la función updateInventory con la cantidad por referencia

// Imprimir la cantidad actualizada
echo $quantity;
?>
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y Flujo