mehrere Arrays vergleichen

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

  • mehrere Arrays vergleichen

    Hallo,

    ich möchte mehrere indizierte Arrays miteinander vergleichen. Dabei soll herausgefunden werden, ob Arrays mit komplett gleichem Inhalt mehrfach vorkommen.

    Mit wenigen Arrays bekomme ich das mit ein paar If´s hin, aber wie macht man das wenn man z.B. 10.000 Arrays mit je 1000 Einträgen hat? Und am besten noch so das deswegen nicht der Server abschmiert?

    Danke Euch im Voraus

  • #2
    wenn du 10.000 array's á 1000 entries hast, hast du was falsch gemacht.

    ansonsten kann dir array_diff() helfen.
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      naja 10000 Arrays mit 1000 Entries....nicht übertrieben, hat man täglich 1000 mal
      Das wären dann 10000000 Arrays mit 1000000 Entries. Geil!!

      Ne, aber mal im Ernst, wäre sowas noch zu handeln?
      Zuletzt geändert von thesilencer5; 17.01.2004, 23:44.

      Kommentar


      • #4
        Original geschrieben von thesilencer5
        Ne, aber mal im Ernst, wäre sowas noch zu handeln?
        machbar bestimmt schon. aber wozu?

        woher hast du so einen müll überhaupt? wie kommen die arrays zustande.

        ich sagte ja bereits.....
        wenn du 10.000 array's á 1000 entries hast, hast du was falsch gemacht.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          hmm, wahrscheinlich verfolge ich eh den falschen Ansatz, aber ich bin noch nicht sehr weit mit meinen Überlegungen. Folgendes:

          Ich versuche, Klickpfade meiner Site-Besucher auszuwerten. Ich setze hierzu ein Cookie, mit dessen Hilfe ich bei jedem Seitenaufruf in meine DB einen Marker(uniq für jeden Besucher), einen Timestamp, einen Referrer und eine Zielseite eintrage.

          Jetzt möchte ich auswerten, welcher Pfad wie oft genommen wurde.

          Ich habe natürlich keine x-tausend Besucher, aber das Ganze soll auch noch funktionieren, wenn mal einige Wochen lang Einträge in der DB landen.

          Kommentar


          • #6
            da du es mit einer db machst, frage ich mich immer noch, warum du so viele arrays hast.
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              aaaaalso, ich hatte mal irgendwo diesen Codefetzen aufgeschnappt, und für meine Bedürfnisse etwas angepasst. Ob es allerdings so sinnvoll ist, bezweifle ich irgendwie. Fakt ist, dass es so weit mal funktioniert:



              PHP-Code:
              <?php 
                  
                  $query_move 
              "SELECT
                                   marker
                                 FROM
                                   movement
                                 WHERE
                                   username='
              $user'
                                 GROUP BY
                                   marker"
              ;
                  
              $move mysql_query($query_move$mydb) or die(mysql_error()); 
                  
              $row_move mysql_fetch_assoc($move); 
                  
              $total mysql_num_rows($move);
                  
              $i=1;    

                  do
                  {
                      
              $marker $row_move['marker']; // Marker bestimmen
                  
                      // DB-Abfrage pro Markergruppe (timestamp, comefrom, goto ermitteln)
                      
              $query_move2 "SELECT
                                          timestamp,
                                          comefrom,
                                          goto
                                      FROM
                                          movement
                                      WHERE
                                          (username='
              $user' AND marker='$marker')
                                      ORDER BY
                                              timestamp"
              ;
                      
              $move2 mysql_query($query_move2$mydb) or die(mysql_error());
                      
              $row_move2 mysql_fetch_assoc($move2);
                          
                      do
                      {        
                          
              // Temporäres Array mit Werten füllen
                          
              $arrTmp[] = $row_move2['timestamp'];
                          
              $arrTmp[] = $row_move2['comefrom'];
                          
              $arrTmp[] = $row_move2['goto']; 
                      }
                      while (
              $row_move2 mysql_fetch_assoc($move2));
                      
              mysql_free_result($move2);
                          
                      
              // Dynamisch benanntes Array erzeugen,
                      // Inhalt von $arrTmp zuweisen und $arrTmp löschen
                      
              $arrName "a".$i;
                      
              $i++;
                      $
              $arrName $arrTmp;
                      unset(
              $arrTmp);
                  
                  }
                  while (
              $row_move mysql_fetch_assoc($move));
                  
              mysql_free_result($move); 

              ?>
              EDIT:
              [php]-tags by Abraxax


              EDIT:
              code korrekt formatiert und sinnlose lange zeilen gekürzt by Abraxax
              Zuletzt geändert von Abraxax; 18.01.2004, 00:18.

              Kommentar


              • #8
                bitte benütze die php-tags des forums.
                du bist doch schon länger dabei. oder? daher solltest DU das auch wissen.


                aber irgendwie verstehe ich den sinn deiner arrays immer noch nicht.
                wozu sollen die denn jetzt gut sein?
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  somit habe ich ein Array pro Besucher, das den kompletten Klickpfad enthält. Nur möchte ich eben nicht (wenn 5 Leute den gleichen Pfad gehen) 5x den selben Pfad anzeigen, sonden nur 1x und dzu schreiben dass er 5x benutzt wurde.

                  Kommentar


                  • #10
                    das kannsr du doch bestimmt auch besser in der DB abfragen.

                    ausserdem ist das o.g. insofern mies, da du in einer schleife immer und immer wieder die DB anfragst.

                    löse das am besten mal mit JOIN(t)s.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      ok, das mit der DB werde ich versuchen.

                      Allerdings -mal abgesehen von der DB- muss ich doch, um zum Ziel zu kommen erst mal alle Klickpfade irgendwo zur weiteren Auswertung bereithalten.
                      Wie würdes Du das machen? Mehrdimensionale Arrays? Das bringt mich wieder zur Frage, wie ich die entries dann vergleiche... array_diff() vergleicht mir ja immer nur ein Array mit den angegebenen, ich müsste aber alle mit allen vergleichen Harter Stoff!

                      Gibt´s sowas nicht irgendwo als fertiges Script, wo man sich mal generelle Anregungen zum Ablauf holen könnte?

                      Kommentar

                      Lädt...
                      X