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 no 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ê deseja que uma função modifique a variável original diretamente. É aqui 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ê diz ao PHP para 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 link direto para a variável $value original, permitindo que a função a modifique diretamente.

Esta técnica é particularmente útil quando você precisa que uma função modifique múltiplas variáveis ou ao trabalhar com grandes estruturas de dados onde a cópia seria ineficiente.

quiz iconTeste seus conhecimentos

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

quiz iconTeste seus conhecimentos

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

quiz iconTeste seus conhecimentos

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

challenge icon

Desafio

Fácil

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

Você receberá três entradas: a quantidade inicial, o valor a ser adicionado e o valor a ser removido. Leia as três entradas, crie uma variável com a quantidade inicial, chame a função updateInventory passando a quantidade por referência junto com os valores de adição e remoção, e imprima a quantidade atualizada.

Formato de entrada: Três linhas - a primeira linha contém a quantidade inicial (um número), a segunda linha contém o valor a adicionar (um número), a terceira linha contém o valor a remover (um número)

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

Folha de consulta

Por padrão, o PHP passa variáveis para funções por valor (uma cópia). Para modificar a variável original, use a passagem por referência adicionando um e comercial (&) antes do nome do parâmetro:

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

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

O parâmetro &$number cria um link direto para a variável original, permitindo que a função a modifique sem retornar um valor. Isso é útil para modificar múltiplas variáveis ou trabalhar com grandes estruturas de dados de forma eficiente.

Experimente você mesmo

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

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

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

// TODO: Chamar a função updateInventory com a quantidade por referência

// Exibir a quantidade 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