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.

De forma predeterminada, 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 directamente la variable original. Aquí es donde entra en juego el paso por referencia. Al añadir un ampersand (&) 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;  // Imprime: 20
?>

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

Esta técnica es particularmente útil cuando necesitas que una función modifique más de una variable o cuando trabajas con estructuras de datos grandes en las que copiar sería ineficiente.

challenge icon

Desafío

Fácil

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

Recibirás tres entradas: la cantidad inicial, la cantidad que añadir y la cantidad que retirar. 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 que añadir y retirar, 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 que añadir (un número) y la tercera línea contiene la cantidad que retirar (un número)

Salida esperada: La cantidad actualizada después de sumar y restar

Pruébalo tú mismo

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

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

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

// TODO: Llama a la función updateInventory con la quantity por referencia

// Mostrar la quantity 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

Practica por tu cuenta: Compilador de PHP online