Überprüfen ob ein Bereich in einem Bereich liegt

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

  • Überprüfen ob ein Bereich in einem Bereich liegt

    Hi,
    ich zermatere mir nun schon seit einiger Zeit den Kopf über ein kleines Problem. Nehmen wir mal an wir haben einen Zahlenberiech von 0 - 100 .

    Nun habe ich mir willkürlich einen Bereich daraus herausgesucht bsp. 43-76. Jetzt möchte ich abfragen ob der Bereich bsp. 24-56 sich mit dem ersten Bereich schneidet.
    Mir fällt keine andere Lösung ein, als jeen einzelnen Wert von 24-56 abzuklappern und zu fragen ob dieser
    x >= 24 AND x <= 76
    ist.
    Kennt jemand vielleicht eine einfachere Lösung, bzw. eine PHP-Function die das für mich erledigt ?

    MfG Daether

  • #2
    Schreib deine Zahlen in einen Array. Dann kannst du mit in_array() nachschauen, ob eine Zahl darin vorkommt.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      Spontan fällt mir das ein (ungetestet):
      PHP-Code:
      $numbers_a range(0100); // 0, 1, 2, 3 .. 100
      $numbers_b range(1530); // 15 .. 30

      if (in_array($numbers_b$numbers_a))
      {
          
      // zahlenbereich b ist in zahlenbereich a

      Nieder mit der Camel Case-Konvention

      Kommentar


      • #4
        problem wäre, das der Aufwand immernoch sehr hoch wäre.
        ich müsste jeden einzelnen Wert mit dem Array überprüfen und diesen auch vorher noch füllen.
        PHP-Code:
        #
        $numbers_a range(0100); // 0, 1, 2, 3 .. 100
        $numbers_b range(1530); // 15 .. 30
        if (in_array($numbers_a$numbers_b))
        {
            echo 
        "\n\n\nTRUE\n\n" ;

        funktioniert leider nicht.

        Kommentar


        • #5
          Das sind nur ein paar, simple Zeilen Code. Wo siehst du den Aufwand? Mir persönlich fällt gerade keine simplere Lösung ein. Am besten erklärst du dein Problem etwas genauer.
          EDIT:

          Lies dir im Manual bitte mal die Funktionesreferenzen von range() und in_array() durch. Du musst die Arrays eben nicht selbst füllen, das macht die Funktion range selbst, wenn du ihr Mininmal- und Maximalwert angibst. in_array() erspart dir jedes Element einzeln durchgehen zu müssen.

          Zuletzt geändert von Griecherus; 12.02.2007, 11:21.
          Nieder mit der Camel Case-Konvention

          Kommentar


          • #6
            Du hast auch die Parameter $numbers_a und $numbers_b in in_array() vertauscht. Bitte nochmal mein Code-Snippet ansehen.
            Nieder mit der Camel Case-Konvention

            Kommentar


            • #7
              So als Vorschlag:
              Benutze array_intersect_assoc() welche dir die Schnittmenge zweier Arrays zurückgeben sollte

              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


              • #8
                ersteinmal danke

                @Griecherus :
                Stimmt beim, habs falsch hierhereinkopiert, ging aber trotzdem nicht. Außerdem habe ich nicht richtig nachgedacht bei meiner Antwort, entschuldige das bitte.

                @jahlives :
                Sowas schönes habe ich gesucht
                So funktioniert das nun :
                Allerdings
                PHP-Code:
                $numbers_a range(0100); // 0, 1, 2, 3 .. 100
                $numbers_b range(1530); // 15 .. 30

                $erg array_intersect $numbers_a $numbers_b ) ;

                print_r $erg ) ; 
                Zuletzt geändert von Daether; 12.02.2007, 11:30.

                Kommentar

                Lädt...
                X