inhalt nach doppelten strings absuchen

muetzenjoe
hi@all...

ich habe eine zeichenkette die wie folgt aussieht:

12345;25364;48735;5362;12345;3882; usw. usw...

jetzt brauche ich ein script, welches den inhalt nach doppelten einträgen absucht. im oberem beispiel praktisch die 12345.

die zeichenkette ist natürlich erheblich länger.

wie gehe ich da nun am besten vor? ich dachte mir in etwa so:

ich lasse in einer schleife nach dem string zwischen den ; suchen und lasse diesen string in einer weiteren schleife mit den restlchen vergleichen.

aber so wie ich mir das gerade vorstelle wird das ein irrer langer prozess.

könnt ihr mir ein paar denk anstöße geben, wie ich das am besten und ordentlichsten beweltige?

vielen dank!
Chris Hunter
und was ist sinn und zweck der ganzen übung? warum suchst du dubletten? und wenn du sie gefunden hast, was willst du damit machen ?
daHooligan
dublettensuche geht eben mit O(n!)...
und sooooo lang dauert das nicht.
was hast du genau vor? das ist keine große sache
Chris Hunter
jep, wenn mans wissen will mus mans eben suchen. Frag mich aber auch nach dem sinn, weil wenn dubletten einfach nur entfernt werden sollen dann einfach in ein array damit über explode und dann array_unique

also

php:
1:
<?php implode(';'array_unique(explode(';'$string))); ?>


Das entfernt alle Dubletten. erstes Vorkommnis eines Strings wird beibehalten.
Wie immer ohne Gewähr....


edit: was ist O(n!) ?
Hanfling
O(n!) und dauert nich soo lange ist nen Widerspruch.

Eigentlich sollte man das in nen Baum einsortieren können O(ln n) und beim halt beim einsortieren stellt man dann fest, ob das Element schon vorhanden ist und löscht es aus dem Anfangsarray.
Hanfling
Zitat:
Original von Chris Hunterwas ist O(n!) ?
Eine Katastrophe
daHooligan
Zitat:
Original von Hanfling
Eigentlich sollte man das in nen Baum einsortieren können O(ln n) und beim halt beim einsortieren stellt man dann fest, ob das Element schon vorhanden ist und löscht es aus dem Anfangsarray.


kluuuug smile
tolle idee...
Chris Hunter
wie gesagt das entfernen von Dubletten aus Arrays erledigt array_unique
muetzenjoe
erstmal danke.

array_unique entfrent die id`s? wie kann ich die denn am besten in eine extra liste speichern? ich will sie ja nicht löschen sondern extra behandeln.

der grund dafür ist folgender:

in einem anderen forum wird mit einer art bonus punkten gearbeitet. die leute tragen sich in einer liste nach und nach mit ihrer id in eine kette ein. an diese id´s werden dann die punkte verteilt oder halt auch noch andere sachen. ich möchte diese liste halt sortieren und nach doppelten einträgen absuchen lassen, denn die kette mit den id`s kann leicht an die 300 - 500 id`s gehen und da schummeln sich gerne mal doppelte ein. ich möchte diese id`s nicht nur raus löschen sondern diese id`s seperat weiter verarbeiten.

hoffe das reicht als begründung.

vielen dank erstmal!
Chris Hunter
doppelte kannst du herausfinden indem du nach dem entfernen die arrays vergleichst mit array_diff

schau dir mal folgende Ausgabe an:

php:
1:
<?php var_dump(array_diff($id_kettearray_unique($id_kette))); ?>