Tach!
Die Ausgabe von "Ho" besagt, dass ein String "Array genug" ist.
Das weiß er anscheinend schon, denn er greift ja mit $ks auf die einzelnen Buchstaben zu.
Das eigentliche Problem:
> foreach ($aSolution as $ks => $vs) {
Das ist die Ursache Deines Problems, denn es entsteht ein Hash. Kommt ein Buchstabe doppelt vor, wird das erste Element mit diesem Key nur überschrieben, kein weiteres angelegt.
Nein, das passiert nicht. Die Keys des Hashes, welches von str_split() erzeugt wird, sind fortlaufend numerisch, das entstehende Array ist genauso lang wie der String.
Benutze einen Iterator:
Hat er ja, foreach ist auch einer. Und in seinem Fall steht in $ks daselbe wie in deinem $i.
[Code] sollte also erst mal die gesuchte Lösung sein. Du musst aber noch was mit der Länge der Antwort machen ...
Nö, denn damit wird nur sein Code anders formuliert, nur nicht das Problem gelöst.
Die Frage ist aber, warum das denn überhaupt ein Problem darstellt. Das T für die erste Fundstelle bleibt doch erhalten, das P für die zweite ist ebenfalls gerechtfertigt. Der Buchstabe kommt vor, aber nicht an dieser Position. Was soll denn stattdessen als Hinweis für den Ratenden gegeben werden? Ein F für gar nicht vorkommend wäre nach meiner Meinung definitiv falsch.
dedlfix.