Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Arrays vergleichen - gemeinsame Werte ausgeben

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Arrays vergleichen - gemeinsame Werte ausgeben

    Guten Morgen,
    ich weiß, die Frage ist schon sehr oft gestellt worden, aber ich sehe den Baum vor lauter Wald nicht mehr.

    Folgende Situation:
    Ich habe zwei Artikellisten (Vorjahr und lfd. Jahr), im lfd. Jahr sind Artikel hinzugekommen und auch welche weggefallen.
    Ich benötige also alle Artikel die im noch existieren und die neu hinzugekommenen Artikel.

    Ich hexe mit array_merge(), array_unique(), array_intersect() und array_diff()
    herum und habe mich vollkommen verfahren.
    PHP-Code:
    $sql "SELECT * FROM `table 1`";
    $result mysql_query($sql)
     OR die(
    "Error: $sql <br>".mysql_error());
                
    while(
    $row mysql_fetch_row($result)){
     
    $avorJahr[] = $row[0];
    }
        
    $sql2 "SELECT * FROM `table 2`";
    $result2 mysql_query($sql2)
     OR die(
    "Error: $sql2 <br>".mysql_error());
        
    while(
    $row mysql_fetch_row($result2)){
     
    $aaktJahr[] = $row[0];

    Kann mich irgendjemand wieder in die Spur bringen?

  • #2
    Zitat von StefanDpunkt Beitrag anzeigen
    Ich benötige also alle Artikel die im noch existieren und die neu hinzugekommenen Artikel.
    Sind das nicht genau die, die in der Tabelle vom laufenden Jahr stehen?

    Btw: Deine Tabellennamen sind nicht sehr aussagekräftig.
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Emmm... möchtest Du das nicht lieber direkt in der Datenbank machen? (-> JOIN)

      Siehe hierzu (z.B.) http://blog.codinghorror.com/a-visua...-of-sql-joins/

      Kommentar


      • #4
        Ich hexe mit array_merge(), array_unique(), array_intersect() und array_diff()
        herum und habe mich vollkommen verfahren.
        Sorry, sehe ich nicht in Deinem Code. Desweiteren mach Dich halt über (mathematische) Mengenoperationen schalu und am besten auch über datenbankseitige Lösungen dafür.
        [COLOR="#F5F5FF"]--[/COLOR]
        [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
        [COLOR="#F5F5FF"]
        --[/COLOR]

        Kommentar


        • #5
          Sind das nicht genau die, die in der Tabelle vom laufenden Jahr stehen?
          --> Vollkommen richtig.
          Btw: Deine Tabellennamen sind nicht sehr aussagekräftig.
          --> ich vergleiche die Artikelnummer, da die Spalte aus dem Vorjahr "Artikelnummer" heißt und die aus dem lfd. Jahr nur "COL 1" lautet, hole ich mir die Werte über [0]

          Kommentar


          • #6
            Sorry, sehe ich nicht in Deinem Code. Desweiteren mach Dich halt über (mathematische) Mengenoperationen schalu und am besten auch über datenbankseitige Lösungen dafür.
            --> Mist!
            PHP-Code:
            <?php
            $sql 
            "SELECT * FROM `table 1`";
            $result mysql_query($sql)
             OR die(
            "Error: $sql <br>".mysql_error());
                        
            while(
            $row mysql_fetch_row($result)){
             
            $avorJahr[] = $row[0];
            }
                
            $sql2 "SELECT * FROM `table 2`";
            $result2 mysql_query($sql2)
             OR die(
            "Error: $sql2 <br>".mysql_error());
                
            while(
            $row mysql_fetch_row($result2)){
             
            $aaktJahr[] = $row[0];
            }
                
            $aMerge array_merge($aaktJahr$avorJahr);
            $aUnique array_unique($aMerge);
            $aIntsect array_intersect($avorJahr$aMerge);
            $aDiff array_diff($aaktJahr$avorJahr);
            $aMerge array_merge($aaktJahr$avorJahr);
                
            echo 
            "<pre>";
            echo 
            count($aIntsect)."<br />";        
            print_r($aIntsect);
            echo 
            "</pre>";
            ?>

            Kommentar


            • #7
              Desweiteren mach Dich halt über (mathematische) Mengenoperationen schlau


              Man muss kein Genie zu sein, um zu sehen, dass die Schnittmenge aus A und der Vereinigungsmenge aus A&B ziemlich genau A ergeben dürfte.

              PHP-Code:
              $aMerge array_merge($aaktJahr$avorJahr);

              $aIntsect array_intersect($avorJahr$aMerge); 
              So gesehen, keine Ahnung was Du da treibst
              [COLOR="#F5F5FF"]--[/COLOR]
              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
              [COLOR="#F5F5FF"]
              --[/COLOR]

              Kommentar


              • #8
                Es sollte eigentlich das da stehen!

                PHP-Code:
                $aIntsect array_intersect($avorJahr$aaktJahr); 

                Kommentar


                • #9
                  Ich benötige also alle Artikel die im noch existieren und die neu hinzugekommenen Artikel.
                  Sind das nicht genau die, die in der Tabelle vom laufenden Jahr stehen?
                  Vollkommen richtig.
                  Ich hab keine Ahnung, was du willst
                  [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                  Kommentar


                  • #10
                    Ich befürchte, Du bist nicht der Einzige.
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar


                    • #11
                      Hallo tkausl & nikosch,

                      ich benötige alle Artikel, die in beiden Listen stehen und die in der Liste des lfd. Jahres stehen

                      Kommentar


                      • #12
                        Zitat von StefanDpunkt Beitrag anzeigen
                        und die in der Liste des lfd. Jahres stehen
                        Wird ja wohl kein Problem sein.

                        Zitat von StefanDpunkt Beitrag anzeigen
                        die in beiden Listen stehen
                        Wird auch kein Problem sein, allerdings hast du dann ja auch die, die im laufenden Jahr nichtmehr existieren und soweit ich dir folgen konnte willst du genau die eben nicht.

                        E: Vertan... Dann hast du alle die noch vom Vorjahr bestehen, allerdings weder neue noch alte verfallene.
                        [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                        Kommentar


                        • #13
                          ich benötige alle Artikel, die in beiden Listen stehen und die in der Liste des lfd. Jahres stehen
                          Schnittmenge aus beiden Listen. Fertig. Und nu?


                          Die Beschreibung "Alle die (sowohl) in A als auch in B stehen UND in A stehen" ist reichlich sinnfrei.

                          oder meinst Du:

                          "Alle die (sowohl) in A als auch in B stehen ODER in A stehen"

                          Sei mal präzise!
                          [COLOR="#F5F5FF"]--[/COLOR]
                          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                          [COLOR="#F5F5FF"]
                          --[/COLOR]

                          Kommentar


                          • #14
                            ich versuche es mal anders zu erklären, ich möchte alle Artikel haben, die es im lfd. Jahr gibt.
                            Artikel letztes Jahr + Artikel lfd. Jahr - gelöschte Artikel aus dem letzten Jahr

                            Kommentar


                            • #15
                              merge(intersect(A,B), A) ?


                              Es ist halt nicht nachvollziehen, was
                              gelöschte Artikel aus dem letzten Jahr
                              jetzt ausmacht. Je nach Interpretation könnte das Ergebnis A oder A+B lauten. Du kannst aber kein Intersect mit Artikeln machen, die Du bereits geöscht hast (Interpretation 3)

                              Mach doch einfach mal ein Beispiel. Hier haste 10 Produkte

                              Marmelade
                              Hirschkuh
                              Hubschrauber
                              Akkuschrauber
                              Zahnseide
                              Buntmetallsäge
                              Kaktus
                              Laborkittel
                              Rattenkäfig
                              Brillenetui
                              [COLOR="#F5F5FF"]--[/COLOR]
                              [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                              [COLOR="#F5F5FF"]
                              --[/COLOR]

                              Kommentar

                              Lädt...
                              X