echo $begrüßung;
Der Inhalt beschränkt sich nicht auf drei Zeilen, wie gewollt, sondern zeigt auf 9 Zeilen einen verdreifachten Inhalt.
Kein Wunder, denn wenn du zwei for(each)-Schleifen schachtelst, wird die innere bei jedem Schritt der äußeren komplett neu abgearbeitet. 3 äußere mal 3 innere Schritte ergibt 9.
Du möchtest stattdessen, wenn im Array $data die Zeile 1 dran ist, auch die Zeile 1 aus $zugabe behandeln. Wenn $data[2] an der Reihe ist muss dann demzufolge auch $zugabe[2] behandelt werden, usw. usf.
Gibt es eine Funktion, die das wie gewünscht vereinigt?
Es reicht, wenn du die Schlüssel beim foreach über $data mit berücksichtigst und damit auf den korrespondierenden Eintrag in $zugabe zugreifst.
echo "$verabschiedung $name";