Sobes.tech
Junior — Middle

Qual é a diferença entre enviar dados por ligação e por valor, e como isso afeta a alteração dos dados dentro do programa?

sobes.tech IA

Resposta da IA

O envio de dados por valor significa que, ao passar uma variável para uma função, é criada uma cópia da mesma. As alterações dentro da função não afetam o original. No PHP, isso é típico para tipos escalares (int, string, bool) e arrays (até PHP 7, com cópia ao gravar).

O envio por referência significa que uma referência aos dados originais é passada para a função, e quaisquer alterações dentro da função refletem-se na variável original. No PHP, isso é implementado com o símbolo de e comercial (&) antes do parâmetro.

Exemplo:

function addOneByValue($num) {
    $num += 1;
}

function addOneByReference(&$num) {
    $num += 1;
}

$a = 5;
addOneByValue($a); // $a continuará a ser 5
addOneByReference($a); // $a passará a ser 6

Assim, o envio por referência permite que a função altere os dados passados, enquanto por valor, não.