Tach!
Ok, ich hab Nägel mit Köpfen gemacht und ein Testskript verfasst. Es funktioniert, wäre das so in etwa in Ordnung? Das einzige was ich mir so als Laie denke: Ist es nötig aus der Schleife auszusteigen, wenn eine Ersetzung durchgeführt wurde, damit sie nicht umsonst noch weiterläuft?
Nochmal genau nachgefragt: Es kann ja nur einmal nach München ersetzt werden, aber kann danach immer noch vorkommen, dass ein anderer Teilstring nach Hamburg/Berlin/wasimmer ersetzt werden muss oder kann nach der ersten erfolgreichen Ersetzung komplett aufgehört werden? Wenn letzteres, dann liefert dir str_replace() in einem vierten Parameter die Anzahl der Ersetzungen zurück, was du als Abbruchkriterium verwenden kannst.
$arrsize = count($replacearr);
for ($i = 1; $i <= $arrsize; $i++) {
$string = str_replace($searcharr[$i-1], $replacearr[$i-1], $string);
$arrsize zu ermitteln gehört genauso wie das Setzen der Scheifenvariable zur Initialisierung des Schleifenvorgangs, also sollte es ebenfalls dort notieren werden (mit Komma getrennt). Weiterhin greifst du 0-basiert auf deine Arrays zu, dann ist es vorteilhafter, die Schleife bei 0 zu beginnen, den Wert direkt zu verwenden und nicht ständig eins abziehen zu müssen. Die Endebedingung ist dann nur < und nicht mehr <=.
dedlfix.