Ankündigung

Einklappen
Keine Ankündigung bisher.

if Problem

Einklappen

Neue Werbung 2019

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

  • if Problem

    PHP-Code:
    $land "Belgien";

    if (
    $land == "Deutschland" ) {
    $zone "Zone=1";
    }
    if (
    $land == ("Frankreich" || "Belgien" || "Niederlande" || "England" || "Irland" || "Lux" || "Österreich" || "Dänemark" || "Tschechien")){
    $zone "Zone=2";
    }
    if (
    $land == ("Polen" || "Litauen" || "Latvia" || "Estonia" || "Slovakai" || "Slovenien" || "Schweden" || "Ungarn" || "Italien" || "Portugal" || "Spanien")){
    $zone "Zone=3";
    }
    if (
    $land == ("Finnland" || "Iceland" || "Griechenland")){
    $zone "Zone=4";
    }
    if (
    $land == "Schweiz") {
    $zone "Zone=5";
    }
    if (
    $land == "Norwegen"){
    $zone "Zone=6";
    }
                }
            } 
    Egal was ich dort eingebe bei $land, es funktioniert nur Schweiz und Norwegen. Ansonsten ist es immer Zone=4 , woran könnte das liegen?

    Danke

  • #2
    ereg_replace (||)

    hast Du anstatt || mal versucht mit "or" zu verknüpfen?

    Kommentar


    • #3
      Re: ereg_replace (||)

      Zitat von nice2kn0w
      hast Du anstatt || mal versucht mit "or" zu verknüpfen?
      Hilft leider auch nix :/

      Kommentar


      • #4
        Ihr möchtet bestimmt mal in der Doku nachsehen, wie man das richtig macht:

        http://www.php.net/manual/de/languag...-structures.if

        Code:
        if ($land == "Frankreich" || $land == "Belgien" ..........
        Oder vielleicht switch/case benutzen:
        Code:
        switch ($land)
        {
           case "Deutschland": $zone = "Zone=1"; break;
        
           case "Frankreich":
           case "Belgien":
           case "Niederlande":
           case "England":
           case "Irland": 
           case "Lux":
           case "Österreich":
           case "Dänemark":
           case "Tschechien": $zone = "Zone=2"; break;
        
           :
           :
        }
        Gruß
        phpfan

        Kommentar


        • #5
          Ich glaub, diese if-Abfragen mit or-Verknüpfungen funktioneieren nicht so. Nimm doch eine switch-Abfrage (ist auch übersichtlicher):
          Code:
          <?PHP
          $land = "Estonia";
          switch ($land)
          {
            case "Deutschland":
              $zone = "Zone=1";
              break;
            case "Frankreich":
            case "Belgien":
            case "Niederlande":
            case "England":
            case "Irland":
            case "Lux":
            case "Österreich":
            case "Dänemark":
            case "Tschechien":
              $zone = "Zone=2";
              break;
            case "Polen":
            case "Litauen":
            case "Latvia":
            case "Estonia":
            case "Slovakai":
            case "Slovenien":
            case "Schweden":
            case "Ungarn":
            case "Italien":
            case "Portugal":
            case "Spanien":
              $zone = "Zone=3";
              break;
            case "Finnland":
            case "Iceland":
            case "Griechenland":
              $zone = "Zone=4";
              break;
            case "Schweiz":
              $zone = "Zone=5";
              break;
            case "Norwegen":
              $zone = "Zone=6";
              break;
          }
          ?>
          Mfg
          Micha

          edit: phpfan war schneller...

          Kommentar


          • #6
            Hier bietet sich eine Lösung mit einem einfachen Array an:
            Code:
            $countries = array('Deutschland' => 1,
                               'Frankreich'  => 2,
                               'Belgien'     => 2,
                               'Niederlande' => 2);
            
            if (!isset($countries[$country])) die('Des Land gibds nedd!');
            
            $zone = $countries[$country];
            Und zu dem Vergleichsoperatoren-Problem:
            Or verknüpft in PHP die bool. Repräsentationen der Werte miteinander: ('foo' || 'bar') wird also interpretiert als (true || true) und das ergibt natürlich true (true log. oder true = true). Wenn du irgendeinen nichtleeren String (also dein $land) via '==' mit true vergleichst, bekommst du immer ein true zurück, siehe[1]. Daher wurde dein Wert auf "Zone=4" gesetzt.

            [1] http://www.php.net/manual/en/types.comparisons.php

            Basti

            Kommentar


            • #7
              Ahh ok, danke an alle!

              Kommentar

              Lädt...
              X