Ok, ich versuche es noch genauer anhand von Beispielen.
Stell Dir sowas wie ne Hobbysuchseite vor. Da tragen sich Leute ein und geben ihre Interessen an.
Nun kannst Du angeben was Du suchst und bekommst die Leute angezeigt, die am meisten mit Dir gemein haben. Das ist sehr vereinfacht, reicht aber.
Was in der Datenbank steht:
Eine Tabelle mit persönlichen Daten der Nutzer. Nennen wir sie "personen"
Eine Tabelle mit einer Angabe der Hobbies. Diese besteht aus einer ID, einem "Hobby" und einer ReferenzID zu den Daten in "personen". Nennen wir diese Tabelle "hobby"
So sieht "hobby" etwa aus:
id hobby personID
--------------------------
1 busfahren 1001
2 schlafen 1002
3 schlafen 1001
4 staubsaugen 1003
5 nachdenken 1002
6 nachdenken 1003
7 schlafen 1003
[..]
Nun kann ich als Besucher der Seite suchen, etwa nach "schlafen und busfahren". Dabei ist nicht zwingend eine totale übereinstimmung erforderlich, sondern nur eine bestmögliche.
mein SQL Query liefert mir dann "1001,1002,1001,1003". Nach der Umformung über array_count_values und einer Sortierung habe ich dann das schöne Ergebnis: "1001,1003,1002"
"1001" hat die meisten Übereinstimmungen und kommt deshalb ganz vorne und 1003 kommt vor 1002 weil die ID höher ist und das heisst der Nutzer ist neuer in der Datenbank und sollte deshalb auch eher angezeigt werden.
Naja soweit so gut, funktioniert ja alles.
Nun würde ich nun noch die persönlichen Daten aus der DB holen wollen und diese genau in der Reihenfolge der IDs in meinem schönen Array anzeigen, aber da spielt ja wie ich jetzt gelernt habe die DB nicht mit.
Ich werde mir jetzt ein Bier aufmachen und das Notebook beleidigen, sowas hat in der jüngeren Vergangenheit beim Denken geholfen.
Für jeden Tipp weiterhin dankbar,
Marting