Dringende Frage zu Arrays

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Dringende Frage zu Arrays

    Gibt es ein Befehl in PHP mit dem ich ein Array auf doppelte Einträge durchsuchen und anschließend löschen kann? Beziehungsweise wie könnte man so etwas machen ?

    Sebastian

  • #2
    ..

    Zweiverschachtelte Schleifen und dann vergleichsoperation. Bei Gleichheit löschen.

    Laufzeit : (n-1)! Schritte

    php-Entwicklung | ebiz-consult.de
    PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
    die PHP Marktplatz-Software | ebiz-trader.de

    Kommentar


    • #3
      nicht einfacher, aber bei wenigen Doubletten schneller:
      (angenommen, dein Array heißt $a und UNBEDINGT eindimensional)

      1) $b = array(); for (reset($a); $x=each($a) $b[$x[1]][] = $x[0];
      Jetzt hast du in $b ein Array indiziert mit den Werten von $a und den einem Array aus Indizes jedes Auftretens.

      2) for (reset($b); $x=each($b) if (is_array($x[1]) && count($x[1]>1))for ($i=1; $i<count($x[1]); $i++) unset($a[$x[1][$i]]);
      Die äußere Schleife wandert durch das Zaehler-Array $b; ist ein Wert in $a mehr als einmal vorhanden, so werden in der inneren Schleife alle Vorkommen bis auf das erste aus $a gelöscht.

      3) $a = explode(';',implode(';',$a));
      indiziert das Array neu, falls es von 0 fortlaufend indiziert sein soll.


      -=* Titus *=-
      | php pro |
      |nerd for life|
      """""""""""""""

      the PHP resource

      Kommentar


      • #4
        ähm ... nicht bei wenigen Dubletten schneller ... in jedem Fall:

        Aufwand: O(n)
        Anzahl der Vergleiche im best, average und worst case: 2*n

        Kommentar


        • #5
          Ich bedank mich bei euch beiden, es hat mir weiter geholfen

          Kommentar


          • #6
            vergessen..

            Shit..den Algorithmus hatte ich vergessen. Sobald ich die Klausur bestanden habe ist immer alles weg.

            Der Algorithmus ist definitiv besser. Aber nur bei größeren Arrays. Bei kleinen dauert das Erzeugen zu lange.
            Zudem erhöhter Speicherplatzaufwand.

            Mußt am besten je nach Situation entscheiden.

            php-Entwicklung | ebiz-consult.de
            PHP-Webhosting für PHP Entwickler | ebiz-webhosting.de
            die PHP Marktplatz-Software | ebiz-trader.de

            Kommentar


            • #7
              übersehen

              Punkt 3) geht noch schneller: sort($a); hat den gleich Effekt

              <b>NICHT</b> $a = sort($a); <b>!!!</b>

              -=* Titus *=-
              | php pro |
              |nerd for life|
              """""""""""""""

              the PHP resource

              Kommentar


              • #8
                *schäm* sort() sortiert ja auch und indiziert nicht nur ...

                @KinNeko: Bei kleinen Arrays fällt der Zeitaufwand für zwei Schleifen wohl nicht so ins Gewicht ...


                -=* Titus *=-
                | php pro |
                |nerd for life|
                """""""""""""""

                the PHP resource

                Kommentar

                Lädt...
                X