echo $begrüßung;
Du übersiehst die Wirkungsweise des foreach-Konstruktes. Dieses arbeitet so lange mit Referenzen, bis eine Modifikation innerhalb der Schleife durchgeführt wird. Dann wird zuerst eine Kopie des zu modifizierenden Wertes angefertigt. Der Originalwert bleibt somit unverändert.
Das würde ich nicht so propagieren, weil dieses interne PHP-Verhalten, bei einer Zuweisung von einer Variable an eine andere, diesen Inhalt erst dann zu kopieren bzw. ein zweites Mal im Speicher abzulegen, wenn sich der Inhalt einer von beiden ändert, nicht auf das foreach-Konstrukt beschränkt ist, und weil zum anderen dieses Verhalten für den PHP-Programmierer im Allgemeinen recht uninteressant ist.
Für das foreach-Konstrukt
foreach($array as $key => $value)
sollte man sagen, dass $value stets eine Kopie von $array[$key] ist. Wünscht man den Wert im Array zu ändern, muss man darauf mit $array[$key] zugreifen oder ab PHP5 $value mittels des Referenz-Operators & zu einer Referenz auf $array[$key] machen.
foreach($array as $key => &$value)
echo "$verabschiedung $name";