Debería ser igual que el lenguaje C (tal vez porque todos están basados en C), aquí está escrito en lenguaje PHP.
Uno, transferencia de valor
La transferencia de valor es la transferencia más común. Las variables a = 1, $ b = $ ay así sucesivamente que normalmente ve son todas transferencias de valor.
La forma en que se pasa es copiar el valor guardado por la variable original y guardar el valor recién copiado en otra variable, es decir, la variable copiada no se ve afectada de ninguna manera. P.ej:
$a = 1;
$b = $a;
echo $a,$b;
En este momento, la salida debería ser 1.
Pero debe tenerse en cuenta que la memoria en este momento debería ser así:
Nota: Las variables almacenan direcciones, es decir, tanto a como b almacenan las direcciones donde se ubican dos unos.
En este caso, si cambiamos $ b, no afectará a:
$a = 1;
$b = $a;
$b = 2;
echo $a,$b;
El resultado en este momento es 1 y 2, es decir, a o a.
Dos, pase por referencia
Pasar por referencia es pasar la dirección de memoria donde se almacena el valor de la variable a otra variable, es decir, dos variables apuntan al mismo espacio de memoria (también el mismo valor):
$a = 1;
$b = &$a;
echo $a,$b;
En este momento, el resultado sigue siendo 1, pero la situación en la memoria es:
En este caso, si cambiamos $ b nuevamente, cambiará directamente el valor de a:
$a = 1;
$b = &$a;
$b = 2;
echo $a,$b;
En este caso, el resultado es dos 2.