@AnGSt Ich seh das Problem das dabei aber jeder Name der irgend einen ähnlichen Namen irgend wo hat in dem Array auftaucht. Dabei hat "Hansi" mit "Peter" eigentlich nichts zu tun. Wenn du Pecht hast hat jeder Name in der Ursprungsliste irgend wo einen passenden "Nachbarn". Und alles was du bekommst ist eine Liste mit den ganzen Namen. Aber die hast du doch eigentlich schon.
Das Ergebnis sollte also ein 2D Array sein dessen 1. Spalte das "Basiswort" sein, also "Hans" oder "Peter". In der 2. Spalte dann ein Array mit den passenden anderen Worten. Also "Hanns", "Hansi" usw.
Mit print_r könnte sowas wie folgt aussehen:
Array
(
[0] => Array
[name] => Hans
[werte] => Array
(
[0] => Hannsi
[1] => Hansi
[2] => Heinz
)
[1] => Array
[name] => Peter
[werte] => Array
(
[0] => Ptr
)
)
oder so ähnlich.
Deine Routine get_similar_names() musst du dazu nur so ändern das er sich dabei merkt ob ein Wort schon irgend wann mal als "positiv" getestet wurde. Sonst kriegst du einen unnötigen Eintrag mit
{"Hannsi", {"Hansi", "Heinz"}}
Kommt aber natürlich drauf an was du damit machen willst.