echo $begrüßung;
Von der Benutzerfunktion aus darf das Array selbst nicht geändert werden, wie zum Beispiel durch Hinzufügen oder Löschen eines Elementes, etc.
So "weit runter" hatte ich nicht gelesen. Wieder ein Argument weniger für array_walk()
... "Call-time pass-by-reference has been deprecated"-Warnung ...
Eben.
Hier sehe ich keinen direkten Zusammenhang. Dieses deprecated bezieht sich nur auf die Art der Übergabe.
Dies ist deprecated:
function foo($normalerweiseAlsKopie) / foo(&$dochAlsReferenz)
Das jedoch nicht:
function foo(&$alsReferenz) / foo($var)
Ich hätte eigentlich auch
function removeEmptyElement($value, $key, &$array)
statt
function removeEmptyElement($value, $key, $array)
schreiben wollen, und die Warnung hätte keinen Grund mehr gehabt.
Aber schon die Funktion array_walk() nimmt den userdata-Parameter nur per Kopie entgegen und das kann ich als Anwender ja nicht ändern.
Eine Übergabe des Variablennamens als String empfand ich als zu unflexibel, da die Array-Variable nicht im Geltungsbereich von removeEmptyElement liegt und auch nicht zwingend im globalen Adressbereich ($GLOBALS[$arrayname]) liegen muss.
Ich hab nochmal was probiert und ein foreach als genau so zweckmäßig und elegant empfunden:
Genau danach hat der OP wohl gesucht. Aber das hätte er dann selbst entwickeln müssen. Du hast ihm soeben die Arbeit abgenommen (wenn er wieder mal hereinschaut).
Nun ja, manchmal kann man auch aus Beispielen lernen. Und manchmal sagt auch ein Bild mehr als 1000 Worte.
Du kannst ganz unbesorgt sein, ich werde so oft es geht nur den Weg aufzeigen. Doch manchmal diskutiert man aufgrund eines Postings etwas und dann halte ich es für kontraproduktiv nur Andeutungen zu geben, damit der OP auch ja self auf die Lösung kommt.
echo "$verabschiedung $name";