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

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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?
    Last edited by Maranello-550; 18-06-2005, 11: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))

    Comment


    • #3
      Hallo,

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

      Comment


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

        ansonsten zeig mal bitte ein beispiel, das nicht geht.

        Comment


        • #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))

          Comment


          • #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" 
            Last edited by Maranello-550; 18-06-2005, 12:07.
            arrays sind klasse

            Comment


            • #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

              Comment


              • #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...

                Comment


                • #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 "&".
                  Last edited by pekka; 18-06-2005, 12:13.

                  Comment


                  • #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...

                    Comment


                    • #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

                      Comment


                      • #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); 

                        Comment


                        • #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

                          Comment


                          • #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....

                            Comment


                            • #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

                              Comment

                              Working...
                              X