Array: nur doppelte Einträge sind wichtig (einzelne Eleminieren)

  • Hi, trotz zahlreicher array funktionen in php finde ich einfach keine lösung für mein problem:

    Ich habe ein string - array wo manche einträge doppelt sind, jetzt möchte ich alle einzelnen einträge elemenieren, so dass zuerst nur die doppelten überleben. Die doppelten kann ich dann immernoch mit array_unique elemenieren (wenn die ursprünglichen einzelnen weg sind), aber wichtig ist der erste schritt.

    Bsp:

    PHP
    $input = array("grün", "rot", "rot", "blau");
    $new_input = funktion_die_ich_suche($input)
    //danach ist nur noch: "rot, "rot" im array
    finally = array_unique($new_input);
    dann ist nur mehr rot im array, was ich auch will...
  • wie wäre es mit einem workaround (in pseudocode):

    PHP
    for each element in array {
    if (element not in array2) { add element to array2; delete element; }
    }
  • Also du brauchst die einzelnen nicht mehr? (Ansonsten würde array_unique ja ausreichen). Also ich würde es so machen.



    Mir fällt keine elegantere Methode ein.

    640K ought to be enough for anybody. :eek2:

  • thx; im php4 - forum habe ich das noch gefunden:

  • Das ist ja fürchterlich. Ich verstehe immer mehr, wieso PHP bei vielen Leuten so unbeliebt ist. Hier ein schnellerer Algorithmus mit ein wenig Struktur und Lesbarkeit ;)


    /edit: Ich sehe gerade, dass ich mdk's Vorschlag implementiert habe :)

    '100 little bugs in the code, 100 bugs in the code. Fix one bug, compile it again: 101 little bugs in the code.
    101 little bugs in the code . . .'
    Continue until 0 Bugs reached...

  • Ups, tschuldige, ich habe anscheinend deinen Post vollkommen übersehen. Bitte das "fürchterlich" mit dem von wuz_thomas gefundenen Code-Beispiel zu assoziieren :)

    '100 little bugs in the code, 100 bugs in the code. Fix one bug, compile it again: 101 little bugs in the code.
    101 little bugs in the code . . .'
    Continue until 0 Bugs reached...

  • Zugegebenermaßen mein Vorschlag wär noch ein bisschen kürzer möglich:



    Diese schreibweiße kenn ich gar nicht: $array[] = $xy ... wird hier am Ende des Arrays das Element angehängt? Gibts das erst seit PHP5 oder hab ichs vorher schon übersehn?

    640K ought to be enough for anybody. :eek2:

  • Wäre sogar noch kürzer möglich mit array_push() oder eben mit $newArray[] = $array[$i]; was im Prinzip dasselbe macht. Gibt es schon seit PHP4, soweit ich weiß.

    '100 little bugs in the code, 100 bugs in the code. Fix one bug, compile it again: 101 little bugs in the code.
    101 little bugs in the code . . .'
    Continue until 0 Bugs reached...

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!