array_intersect

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

  • array_intersect

    ich habe vier array´s und will die gemeinsamen elemente der vier array´s herausfinden. klappt ja mit array_intersect ziemlich gut. mein problem ist nun, dass es bei mir auch vorkommt, dass ein oder mehrere array´s leer sind. das verkraftet array_intersect dann nicht mehr. da ich vier array´s habe, wären das 16 kombinationen und so viele if-anweisungen und array_intersect-befehle will ich dann doch nicht tippsen, vorallen wenn irgendwann mal noch eins dazu kommt. gibt es da eine andere/bessere lösung?
    ich geh zum lachen in den keller

  • #2
    Re: array_intersect

    Original geschrieben von KamiKatze
    mein problem ist nun, dass es bei mir auch vorkommt, dass ein oder mehrere array´s leer sind. das verkraftet array_intersect dann nicht mehr.
    "Verkraftet" es das nicht, wenn die Arrays nur leer sind - oder gibt es Typprobleme, weil es vielleicht gar keine Arrays sind?

    OffTopic:
    Immer diese verdammt unpräsizen Problembeschreibungen. Auch "verkraftet es nicht" ist schon reichlicher Mist.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      OffTopic:
      wahsaga verkraftet es nicht, sich mit unpräzisen Posts rumschlagen zu müssen

      @wahsaga: kann es sein, dass du in letzter Zeit sehr laut denkst

      @KamiKatze: plz code
      Sunshine CMS
      BannerAdManagement
      Borlabs - because we make IT easier
      Formulargenerator [color=red]Neu![/color]
      Herkunftsstatistik [color=red]Neu![/color]

      Kommentar


      • #4
        array_intersect vergleicht die eingegebenen array´s und sucht gemeinsame inhalte. was passiert, wenn ein array mit 20 einträgen kommt und was wenn ein leeres array kommt? da gibt es keine übereinstimmungen und die ergebnismenge ist leer.
        OffTopic:
        mit einem blick in die hilfe und kurzem nachdenken könnte man drauf kommen, dass ich vielleicht genau das meinte

        ist ja auch logisch und richtig was array_intersect da macht, doch ich würde gern wissen, ob es die möglichkeit gibt, dass array_intersect die leeren array´s ignoriert, oder ob es einen ähnlichen befehl gibt, der so arbeitet?
        oder muss ich array_intersect($array1, $array2, $array3); bzw. array_intersect ($array1, $array3); .... mit if abfangen?
        ich geh zum lachen in den keller

        Kommentar


        • #5
          Allenfalls wenn du ein Array um die leeren Einträge säuberst ?
          PHP-Code:
          function rem_empty($var){
              if(
          $var === ''){
                  return 
          false;
              }
              else{
                  return 
          true;
             }
          }
          //Dein Array
          $temp array_filter($dein_array,"rem_empty");
          $tempo array_intersect($temp,$dein_array1,$dein_array2); 
          imho müsste das auch mit leeren Arrays funzen. Sofern sie als Array deklariert sind.

          Gruss

          tobi
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            Original geschrieben von KamiKatze
            OffTopic:
            mit einem blick in die hilfe und kurzem nachdenken könnte man drauf kommen, dass ich vielleicht genau das meinte
            OffTopic:
            Jetzt sollen wir uns als noch den Kopf darüber zerbrechen und im Manual wühlen, weil du nicht in der Lage bist, eine präzisere Problembeschreibung zu verfassen?
            Aber sonst darfst du noch alles essen ...?

            array_intersect vergleicht die eingegebenen array´s und sucht gemeinsame inhalte. was passiert, wenn ein array mit 20 einträgen kommt und was wenn ein leeres array kommt? da gibt es keine übereinstimmungen und die ergebnismenge ist leer.
            Works as designed.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Works as designed.
              hab ich nie anders behauptet.
              Jetzt sollen wir uns als noch den Kopf darüber zerbrechen und im Manual wühlen, ...
              nein, aber man sollte doch über die arbeitsweise des befehls bescheid wissen, bevor man eine antwort gibt, oder? ein blick in die hilfe und ein blick auf
              problem ist nun, dass es bei mir auch vorkommt, dass ein oder mehrere array´s leer sind.
              hätte doch schon all deine fragen beseitigt, oder?

              und meine frage
              da ich vier array´s habe, wären das 16 kombinationen und so viele if-anweisungen und array_intersect-befehle will ich dann doch nicht tippsen, vorallen wenn irgendwann mal noch eins dazu kommt. GIBT ES DA EINE ANDERE/BESSERE LÖSUNG?
              sich ja gar nicht auf array_intersect bezieht und noch immer im raum steht.
              ich geh zum lachen in den keller

              Kommentar


              • #8
                Original geschrieben von KamiKatze
                nein, aber man sollte doch über die arbeitsweise des befehls bescheid wissen, bevor man eine antwort gibt, oder? ein blick in die hilfe und ein blick auf hätte doch schon all deine fragen beseitigt, oder?
                Nein.
                Was der Befehl macht, ist mir bewusst.
                Aber an hand deiner Fragestellung war mir nicht klar, was du denn jetzt wissen wolltest. Wieso formulierst du derart d*mlich? Was soll die Behauptung, dass array_intersect "leere Arrays nicht verkraften" würde? Das ist absoluter Nonsense, natürlich tut es das. Dass das Ergebnis dann vielleicht nicht dem von dir gewünschten entspricht, ist doch eine ganz andere Baustelle.

                /EOD für mich.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  OffTopic:
                  wow, du musst wirklich einen vedammt schlechten tag haben. eine einfach nachfrage hätte doch vollkommen ausgereicht. wir sind doch trotz deines tollen eröffnungsthreads
                  Immer diese verdammt unpräsizen Problembeschreibungen. Auch "verkraftet es nicht" ist schon reichlicher Mist.
                  auf den kern der sache gestößen.

                  Wieso formulierst du derart d*mlich?
                  wieso gibt es zwei weitere forumsmitglieder, die es einerseits schaffen vernünftig nachzufragen und andererseits gleich eine mögliche hilfestellung zu geben?

                  Ich bedanke mich bei Benny-one und jahlives.

                  OffTopic:
                  @wahsaga
                  /EOD für mich.
                  finde ich ehrlich gesagt schade, denn ich habe hilfe gesucht und keinen streit. als moderator kannst du threads doch in den trash schieben? mein vorschlag an dich, du schmeißt diesen thread hier auf den müll, denn genau das ist er. wenn du das machst, würde ich gern mein problem mit einer besseren problembeschreibung bei brainstorming php nochmal rein stellen. denn ich suche immer noch hilfe bzw. vorschläge zu diesem thema. ob du dann zu diesem thema nochmal was sagst, ist deine entscheidung.
                  Zuletzt geändert von KamiKatze; 27.10.2005, 13:28.
                  ich geh zum lachen in den keller

                  Kommentar


                  • #10
                    @KamiKatze: wahsaga hat mit seinem ersten Post eine Hilfestellung gegeben.
                    "Verkraftet" es das nicht, wenn die Arrays nur leer sind - oder gibt es Typprobleme, weil es vielleicht gar keine Arrays sind?
                    Er hat dich damit gefragt, welche Art von Fehler auftritt oder ob der Array eventuell gar kein Array ist sondern z.B. n String. Du wirst dich sicher fragen "wieso kommt der auf die idee, dass das vll kein Array ist". Antwort: hier haben so manche user schon so machne sachen vollbracht, da ist es besser noch einmal nachzufragen. Im Endeffekt hättest du einfach eine detailiertere Beschreibung des Problems abgeben müssen und auch etwas Code zu Verfügung stellen können. So kann jeder leichter nachvollziehen, wo das Problem ist und kann dir entsprechend helfen.
                    Und einen Thread in Brainstorming aufmachen ist sicherlich der falsche Weg. 1. Crossposting (garnicht gerne gesehen), 2. handelt es sich hier um ein PHP Problem, warum also Brainstorming...
                    Zuletzt geändert von Benny-one; 27.10.2005, 13:55.
                    Sunshine CMS
                    BannerAdManagement
                    Borlabs - because we make IT easier
                    Formulargenerator [color=red]Neu![/color]
                    Herkunftsstatistik [color=red]Neu![/color]

                    Kommentar


                    • #11
                      ich weiß, dass ich mein problem hätte besser formulieren können und wahsaga weiß, das man manche offtopics besser für sich behält und lieber einmal laut durchs büro schreit. es ging um die art, um meine und seine und die waren beide nicht das gelbe vom ei. da sollten wir uns eigentlich alle einig sein, oder?

                      was das brainstorming angeht: das problem liegt ja nicht an der funktion array_intersect, sondern daran, dass ich diese funktion abgewandelt brauche. diese scheint es aber nicht abgewandelt zu geben und daraus stellt sich doch die frage, wie man diese problemstellung besser umsetzen kann. vielleicht eine geschachtelte verwendung von array_intersect, oder die array´s anders definieren, usw. sollte doch eigentlich zu brainstorming passen, oder?
                      das Crossposting nicht gerne gesehen wird, weiß ich. doch ehrlich gesagt, will ich das problem in diesem thread, mit den vorhergehenden äußerungen nicht weiterführen. ich würde aufgrund der vorhergehenden fehler mit dem thema nochmal neu beginnen wollen (als zeichen der besserung ) es würde mich sehr freuen, wenn der thread auf den müll wandert. hier hab weder ich mich, noch wahsage sich mit ruhm bekleckert und das muss ja ein erstbesucher nicht unter den normal topics finden.
                      ich geh zum lachen in den keller

                      Kommentar


                      • #12
                        Original geschrieben von KamiKatze
                        denn ich suche immer noch hilfe bzw. vorschläge zu diesem thema.
                        Na gut, begraben wir doch jetzt mal alles andere, und widmen uns dem Problem.

                        Also, Problem ist, dass du mit leeren Arrays keine Übereinstimmungen bekommst, richtig? Gut, das ist ja auch so weit erst mal logisch. Wenn du fragt, wie viele Elemente aus dem Array {7, 3, 11 } und dem leeren Array { } übereinstimmen, sind das nun mal exakt null Stück.

                        Du willst also jetzt Arrays, die leer sind, gar nicht mit in die Betrachtung einbeziehen? Ist das korrekt? (eine definitive Aussage hierzu fehlt mir irgendwie noch - und das ist dann ja schon von dem, was du willst, etwas ganz anderes als "array_intersect kommt damit nicht klar".)

                        Dann würde ich mir eine Art "Wrapper" für array_intersect schreiben, der zwei Arrays übergeben bekommt. Wenn diese beide nicht leer sind, bildet er durch Aufruf von array_intersect mit diesen zwei Arrays die "Schnittmenge", und gibt sie zurück. Andernfalls gibt er nur das gefüllt übergebene Array unverändert zurück.
                        Dieses zurückgegebene Array und das "nächste" von deinen Arrays werden jetzt wiederum in deinen Wrapper reingegeben, etc.
                        Da muss man dann aber noch drauf achten, was passiert, wenn mal beide Arrays beim Aufruf dieses Wrappers leer sein sollten ...
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          es sind momentan 4 array´s. dabei bleibt es auch erstmal.
                          ich schicke 4 query´s an eine datenbank, die alle als ergebnis indexe liefern. der index ist aber ein fremdschlüssel auf eine andere tabelle.
                          die ergebnisse der query´s wandel ich alle in array´s um und damit komm ich auf meine 4 stück.
                          jetzt kann es aber passieren, dass eine der query´s kein ergebnis liefert. das heißt ja nun aber nicht, dass es den fremdschlüssel nicht gibt, so lange mindestens eine query ein ergebnis liefert. damit entstehen die leeren array´s, die ich ignorieren möchte.
                          würden alle kein ergebnis liefern, scheitert ja die komplette suche. das überprüfe ich und damit ist dieser fall behandelt.

                          was meinst du mit "wrapper"? das sagt mir nur etwas in verbindung mit klassen.
                          das prinzip hört sich aber vielversprechend an. ich würde mir eine funktion schreiben, der ich wie du schon meintest zwei array´s übergebe und dann wenn sie beide nicht leer sind array_intersect nutze und als ergebnis zurückgebe, oder nur das volle.

                          ich probiere es gleich mal. für deine hilfe
                          ich geh zum lachen in den keller

                          Kommentar


                          • #14
                            Original geschrieben von KamiKatze
                            die ergebnisse der query´s wandel ich alle in array´s um und damit komm ich auf meine 4 stück.
                            jetzt kann es aber passieren, dass eine der query´s kein ergebnis liefert.
                            Dann würde ich's doch einfach an der Stelle machen:

                            1. query -> $array1 erstellen
                            $ergebnis = $array1

                            2. query -> array2 erstellen
                            wenn $ergebnis leer -> $ergebnis = $array2
                            andernfalls -> wenn $array2 nicht leer -> $ergebnis = array_intersect($ergebnis, $array2)

                            3. query -> array3 erstellen
                            wenn $ergebnis leer -> $ergebnis = $array3
                            andernfalls -> wenn $array3 nicht leer -> $ergebnis = array_intersect($ergebnis, $array3)

                            ...
                            I don't believe in rebirth. Actually, I never did in my whole lives.

                            Kommentar


                            • #15

                              das sieht ja richtig einfach aus. ich war wohl zu , um darauf zu kommen. für deine hilfe und sorry wegen gestern.
                              ich geh zum lachen in den keller

                              Kommentar

                              Lädt...
                              X