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.