Arrays vergleichen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Arrays vergleichen

    Hallo,

    ich hab mir ne Funktion geschrieben, die zwei Arrays vergleicht und alle Werte die in beiden Arrays vorkommen als neues Array zurückgibt:

    PHP-Code:
    <?php
    function ArrayAND $ArrayOne $ArrayTwo ) {
    $i=0;
    while ( 
    $ArrayOne $i ] ) {
        
    $j=0;
        while ( 
    $ArrayTwo $j ] ) {
            if ( 
    $ArrayOne $i ] == $ArrayTwo $j ] ) { $NewArray [] = $ArrayOne $i ]; }
            
    $j++;
            }
        
    $i++;
        }
    return 
    $NewArray;

    ?>
    bei Arrays so um die länge von zehntausend Einträgen wirds halt kritisch und man bräuchte einen Blade Server

    Gibts vielleicht ne pfiffige Methode um mit sehr grossen Arrays "Mengen" zu bilden. Ich will ne ganze Masse von Indices durchfiltern.

    Gruss Manfred
    Cocoa Entwicklertraining - Alles für die Apfelzucht

  • #2
    wie wär's mit:
    array_diff
    array_diff_assoc
    array_intersect
    array_intersect_assoc

    ?
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Nunja es gibt ja die Funktion array_intersect , vllt hilft diese dir weiter.

      €dit: Hmpf, mrhappiness war wohl schneller.

      Kommentar


      • #4
        array_intersect sollte mich ans Ziel bringen - danke, hab zwar lange in der Referenz geblättert, aber wie das halt so ist...
        Cocoa Entwicklertraining - Alles für die Apfelzucht

        Kommentar


        • #5
          zu früh gefreut:

          Irgendein haken ist da noch: Als zweiter Array muss immer derjenige übergeben werden, der den kleinsten Wert enthält. array_intersect ($arr1,$arr2) liefert ein anderes Ergebnis als array_intersect ($arr2,$arr1).

          Mit der Anzahl der Arrayelemente hat es wohl nichts zu tun - komische Sache sollte doch eigentlich "vorwärts wie rückwärts" gehn?

          Gruss Manfred
          Cocoa Entwicklertraining - Alles für die Apfelzucht

          Kommentar


          • #6
            beispielcode?

            stimmen die datentypen?
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar


            • #7
              also:

              PHP-Code:
              <?php
              for ($i 11$i <= 30000$i++) { $arr1[]=$i;}
              for (
              $i 10$i <= 20000$i++) { $arr2[]=$i;}
              $NewArray array_intersect ($arr1,$arr2);

              $i=0; while ($NewArray $i ]){echo $NewArray $i ].'<br>';$i++;}
              ?>
              gibt alle Zahlen von 11 - 20000 aus - gut

              PHP-Code:
              <?php
              for ($i 1$i <= 30000$i++) { $arr1[]=$i;}
              for (
              $i 10$i <= 20000$i++) { $arr2[]=$i;}
              $NewArray array_intersect ($arr1,$arr2);

              $i=0; while ($NewArray $i ]){echo $NewArray $i ].'<br>';$i++;}
              ?>
              liefert garkeine Ausgabe, vertausche ich $arr1 und $arr2 stimmts, alle Zahlen von 10 -20000...
              Cocoa Entwicklertraining - Alles für die Apfelzucht

              Kommentar


              • #8
                ...oder mal anderst gefragt:

                ich hab ne mySQL Tabelle mit Postings, Kleinanzeigen. In weiteren Tabellen werden diese Postings nun Suchkriterien zugeordenet - eine für Postleitzahlenbereiche, eine für Rubriken, Suchbegriffe die im Text vorkommen...

                Diese werden nun auf der Userseite gefiltert, also plz eingeben, Rubrik, Suchbegriff. Dann such ich aus den Tabellen die entsprechenden Wertepaare, filter die Arrays nach der Reihe durch und erhalte quasi als Schnittmenge meine Suchtreffer. In ner weiteren Tabelle hab ich dann noch die gesperrten Anzeigen, also alles was in diese Tabelle ist wird dann auch noch rausgeschmissen.

                Funktionieren tuts, auch noch mit grossen Datenmengen - aber gibts ne Möglichkeit vielleicht direkt mit mySQL solche "Mengenlehre" zu betreiben - UNITE funktioniert erst ab Version 4.x

                Gruss Manfred
                Cocoa Entwicklertraining - Alles für die Apfelzucht

                Kommentar

                Lädt...
                X