Если вы не перейдете по ссылке в цикл foreach, любые изменения и обновления не будут автоматически сохранены в исходной структуре данных после завершения цикла.
Например:
$test = array('cat'=>'meow','dog'=>'woof');
foreach($test as $a){
$a='test';
}
print_r($test);
В этом случае массив будет по-прежнему содержать:
array('cat'=>'meow','dog'=>'woof');
Однако в этом примере используются ссылки:
$test=array('cat'=>'meow','dog'=>'woof');
foreach($test as &$a){
$a='test';
}
var_dump($test);
... массив будет содержать:
array('cat'=>'test','dog'=>'test');