Tach!
Selbst wenn man das über die Keys machen will, ist das zu umständlich. Es gibt
foreach ($array as $key => $value)
da wird der Key gleich mitgeliefert.
Wow!
Eine andere Zeile!
Die "andere Zeile" bewirkt, dass nur einmal über das Array iteriert werden muss. Mit deiner Variante müssen zuerst alle Keys eingesammelt werden, um dann über sie zu laufen.
und dann auch noch statt dem wahnsinnig umständlichen
$array[$key] .=' Welt';
nur ein
$array[$key] .=' Welt';
Zum Schreiben braucht man in beiden Varianten $array[$key], aber für das reine Lesen wäre $value vorhanden und einfacher handzuhaben. Damit fällt je Verwendung eine Auflösung des Ausdrucks $array[$key] und damit PHP-intern eine Suche im Array nach dem Schlüssel weg und der Leser hat es auch etwas einfacher.
Zudem kann man diese Key-Value-Foreach-Schleife auch noch mit der Referenz kombinieren
foreach ($array as $key => &$value)
So kann man direkt über $value das Element lesen und schreiben und nur zum Löschen wird $array[$key] benötigt.
Da wird der Interpreter aber vor Freude aus dem Häuschen sein, dass er es nicht so UMSTÄNDLICH vorgelegt bekommt.
Dem wird das egal sein, die Laufzeitunterschiede sind sicher nicht spürbar. Es geht hier mehr um die Lesbarkeit. Der Funktionsaufruf ist unüblich, weil es eine direkte Lösung gibt. Das bremst vor allem beim Lesen des Codes.
dedlfix.