Syntax geht; Syntax geht nicht; Syntax geht; Syntax ...

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

  • Syntax geht; Syntax geht nicht; Syntax geht; Syntax ...

    Hallo Leute,

    ich habe große Probleme folgende Syntax effektiv einzusetzen:
    PHP-Code:
    if($var1 == TRUE $var2
    Ich habe sie getestet und es hat geklappt; problemlos! Nun wende ich sie an verschiedenen Stellen meines Skipts an und muss feststellen, dass scheinbar nicht immer diese Syntax akzeptiert wird.
    Ich habe z.B. einige Konstanten definiert und diese mit einzelnen Array-Werten verglichen. Wenn ich dies in einer Test-Datei mache, geht es problemlos. Wenn ich dies aber, wie ich gerade feststellen musste, in einem Objekt mache, geht nix!

    Wenn ich es aber so mache, funktioniert es wieder an jeder Stelle:
    PHP-Code:
    if($var1 == TRUE && $var1 == $var2
    Wie soll ich das verstehen?
    Zuletzt geändert von Maranello-550; 18.06.2005, 12:46.
    arrays sind klasse

  • #2
    Deine Abfrage formuliert höchstwahrscheinlich nicht das, was Du wissen willst, und funktioniert deshalb nur manchmal.

    Ich nehm an, Du willst wissen, ob var1 und var2 gesetzt sind. Probier

    if(($var1 == TRUE) && ($var2))

    Kommentar


    • #3
      Hallo,

      Hab meinen ersten Beitrag noch editiert, damit klar wird, welche Bedingung ich setzen will.
      arrays sind klasse

      Kommentar


      • #4
        hmm, könntest mal ne zusätzliche Klammer drum bauen.

        ansonsten zeig mal bitte ein beispiel, das nicht geht.

        Kommentar


        • #5
          Wenn ich dies in einer Test-Datei mache, geht es problemlos. Wenn ich dies aber, wie ich gerade feststellen musste, in einem Objekt mache, geht nix!
          Mehr Code. Wie meinst Du das?
          Dir ist klar, daß Du mit der Abfrage prüfst, ob var1 und var2 true sind? D.h. Du kannst damit nur boolsche Variablen abfragen.

          Den gleichen Effekt hätte

          if (($var1 == true) and ($var2 == true))

          Kommentar


          • #6
            Folgende Test-Datei geht:
            PHP-Code:
            define("ROOT""name");
            $value['name_exp_root'] = "name";

            if(
            ROOT == TRUE $value['name_exp_root'])
            echo 
            "JUHU";

            /// er gibt hier auch brav "JUHU" aus 
            Wenn ich dies aber in einer Klasse verwende (hier vereinfacht dargestellt), geht es gar nicht:
            PHP-Code:
            define("ROOT""name");

            class 
            test
            {
              function 
            test($root_array)
              {
                foreach(
            $root_array as $key => $value)
                {
                  if(
            ROOT == TRUE $value['name_exp_root'])
                  {
                    die(
            "JUHU");
                  }
                }
              }
            }

            $test_array = array(=> array('name_exp_root' => 'name'));

            $test = new test($test_array);

            /// hier jetzt jedoch kein "JUHU" 
            Zuletzt geändert von Maranello-550; 18.06.2005, 13:07.
            arrays sind klasse

            Kommentar


            • #7
              Und jetzt nochmal der Test:

              PHP-Code:
              define("ROOT""name");

              class 
              test
              {
                function 
              test($root_array)
                {
                  foreach(
              $root_array as $key => $value)
                  {
                    if(
              ROOT == TRUE $value['name_exp_root']) /// <--- Bedingung
                    
              {
                      die(
              "JUHU");
                    }
                  }
                }
              }

              $test_array = array(=> array('name_exp_root' => 'name'));

              $test = new test($test_array);

              /// Ergebniss bleibt aus! 
              PHP-Code:
              define("ROOT""name");

              class 
              test
              {
                function 
              test($root_array)
                {
                  foreach(
              $root_array as $key => $value)
                  {
                    if(
              ROOT == TRUE && ROOT == $value['name_exp_root']) /// <--veränderte Bedingung
                    
              {
                      die(
              "JUHU");
                    }
                  }
                }
              }

              $test_array = array(=> array('name_exp_root' => 'name'));

              $test = new test($test_array);

              /// jetzt klappts! 
              arrays sind klasse

              Kommentar


              • #8
                Abgesehen davon, dass dien Code ne } zu viel hat, würde ichs ja der einfachheit so machen:

                PHP-Code:
                if(ROOT && ROOT == $value['name_exp_root']) 
                Ist eigentlich nicht mehr arbeit
                EDIT:
                Okay, zu langsam...

                Kommentar


                • #9
                  Formulier bitte mal in normaler Sprache, was genau Du abfragen willst. Ich blicks nicht. Bin aber auch nicht so stark in bitweisen Operatoren, die du hier einsetzt.

                  Bist Du sicher, daß Du weißt, was du tust?

                  Und kennst Du Isset()?

                  EDIT:
                  Aaaah! Jetzt gehts. Also nix mit "&".
                  Zuletzt geändert von pekka; 18.06.2005, 13:13.

                  Kommentar


                  • #10
                    Original geschrieben von pekka
                    EDIT:
                    TobiaZ war schneller und hat die richtige Lösung, wenn ich das Problem richtig verstanden habe...
                    Auch nicht wirklich. Wenn man bedenkt, dass er es dann doch selbst gelöst hat...

                    Kommentar


                    • #11
                      Natürlich kann ich dasProblem mit TobiaZ Lösung ... lösen, doch frag ich mich, wie weit die Syntax gültig ist. Weshalb klappt es denn nicht immer?

                      Und um es nochmal zu sagen:
                      PHP-Code:
                      define("ROOT"123);
                      $value['name_exp_root'] = 123;

                      if(
                      ROOT == TRUE $value['name_exp_root']) <--- Bedingung
                      echo "JUHU";

                      /// Das klappt hier immer! 
                      PHP-Code:
                      define("ROOT"123);
                      $value['name_exp_root'] = 123;

                      if(
                      ROOT == TRUE && ROOt == $value['name_exp_root']) <--- veränderte Bedingung
                      echo "JUHU";

                      /// Das klappt hier AUCH immer! 
                      Nur im Objekt geht das nicht.

                      arrays sind klasse

                      Kommentar


                      • #12
                        Ich nehme an du möchtest eigentlich prüfen, ob die Konstante ROOT gesetzt ist und ihr Wert dem aus dem Array entspricht. Das ginge etwa so:
                        PHP-Code:
                        define("ROOT""name");
                        class 
                        test {
                          function 
                        test($root_array) {
                            foreach (
                        $root_array as  $key => $value) {
                              if (
                        defined("ROOT") && ROOT == $value)
                                die(
                        $key);
                            }
                          }
                        }

                        $test_array = array('name_exp_root' => 'name');
                        $test = new test($test_array); 

                        Kommentar


                        • #13
                          onemorenerd, nein, denn in meinem Skript ist ROOT immer definiert und kann daher auch falsch sein.

                          Doch weshalb ist eine Bedingung, bzw. die Art und Weise, wie man sie stellt, nicht immer gültig?
                          Dies scheint mir ein Fehler in der Zend Engine zu sein
                          arrays sind klasse

                          Kommentar


                          • #14
                            Dies scheint mir ein Fehler in der Zend Engine zu sein
                            Hast Du dir den Link angeguckt, den ich hinter "bitweise Operatoren" gesetzt habe? Ist dir klar, was ein Ampersand (&) bedeutet? Und hast Du meine Frage gelesen, ob Du weißt, was du tust? Fehler in der Engine, tststs....

                            Kommentar


                            • #15
                              Dann erklär mir mal bitte, warum beide Paradigmen in der Test-Datei klappen, und nur im Objekt eines davon funktioniert?!?

                              Wenn ich eine Bedingung habe, die an einem Ort klappt, dann möchte ich natürlich auch, dass dieselbe Bedingung, mit denselben Variablen bzw. Konstanten, auch an einem anderen Ort im Skript klappt!
                              arrays sind klasse

                              Kommentar

                              Lädt...
                              X