При передаче по значению (по умолчанию) - изменения не видны снаружи:
function modify(array $arr) {
$arr[0] = 'changed';
}
$data = ['original'];
modify($data);
echo $data[0]; // "original"При передаче по ссылке - изменения видны:
function modify(array &$arr) {
$arr[0] = 'changed';
}
$data = ['original'];
modify($data);
echo $data[0]; // "changed"В момент модификации массива, переданного по значению, срабатывает copy-on-write: PHP создает полную копию массива и модифицирует ее.