Menu
Coddy logo textTech

Passagem por Referência

Parte da seção Lógica & Fluxo do Journey de PHP da Coddy. Lição 7 de 68.

Por padrão, quando você passa uma variável para uma função em PHP, a função recebe uma cópia do valor dessa variável. Isso significa que quaisquer alterações feitas dentro da função não afetam a variável original fora da função.

No entanto, às vezes você quer que uma função modifique a variável original diretamente. É aí que entra a passagem por referência. Ao adicionar um e comercial (&) antes do nome do parâmetro na definição da sua função, você instrui o PHP a passar a variável real em vez de uma cópia:

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

$value = 10;
doubleValue($value);
echo $value;  // Saída: 20
?>

Observe como $value mudou de 10 para 20, embora não tenhamos retornado nada da função. O parâmetro &$number cria um vínculo direto com a variável original $value, permitindo que a função a modifique diretamente.

Esta técnica é particularmente útil quando você precisa que uma função modifique várias variáveis ou quando trabalha com estruturas de dados grandes, nas quais fazer cópias seria ineficiente.

challenge icon

Desafio

Fácil

Crie uma função chamada updateInventory que receba três parâmetros: uma referência a uma variável de quantidade, uma quantidade a adicionar e uma quantidade a remover. A função deve modificar a quantidade original adicionando a primeira quantidade e subtraindo a segunda.

Você receberá três entradas: a quantidade inicial, a quantidade a adicionar e a quantidade a remover. Leia as três entradas, crie uma variável com a quantidade inicial, chame a função updateInventory passando a quantidade por referência juntamente com as quantidades a adicionar e a remover e imprima a quantidade atualizada.

Formato da entrada: Três linhas — a primeira linha contém a quantidade inicial (um número), a segunda linha contém a quantidade a adicionar (um número) e a terceira linha contém a quantidade a remover (um número)

Saída esperada: A quantidade atualizada após a adição e a remoção

Experimente você mesmo

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

// Criar variável quantity
$quantity = $initialQuantity;

// TODO: Crie a função updateInventory aqui que recebe um parâmetro por referência

// TODO: Chame a função updateInventory com a quantity por referência

// Exibir a quantity atualizada
echo $quantity;
?>
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de PHP online