Ankündigung

Einklappen
Keine Ankündigung bisher.

variable als if condition

Einklappen

Neue Werbung 2019

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

  • variable als if condition

    Hallo,

    Kann mir jmd. sagen wie ich dies hier ausdrücken muss damit false rauskommt?
    PHP-Code:
    $ifcondition '"eins" == "zwei"';
    if(
    $ifcondition == false) echo "FALSCH!"
    Mir ist bewusst, dass das hier funktioniert:
    PHP-Code:
    if(("eins" == "zwei") == false) echo "FALSCH!"
    allerdings ist $ifcondition nicht immer gleich

    auch das Klammersetzen bringt nichts, da ich im endeffekt einfach nur sage das Falsch ausgegeben werden soll wenn $ifcondition nicht definiert ist, sie aber vorher als string definiere. Der String soll allerdings als True oder False ausgegeben werden.

    Hoffe das alles war so weit verständlich..
    Suchfunktion hat mir nichts gezeigt.

  • #2
    Du willst da keinen String in der Variablen haben, sondern das boolsche Ergebnis eines Vergleiches.
    PHP-Code:
    $ifcondition "eins" == "zwei";
    if(
    $ifcondition === false){
        echo 
    'FALSCH!';

    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Danke für die schnelle Antwort, allerdings ist die Variable $ifcondition im Kontext ein Resultat aus str_replace und substr. D.H., dass ich vom String in ein Boolean umwandeln will.

      Edit:
      ich hab' hier eine lösung gefunden:
      http://grokbase.com/t/php/php-genera...to-a-condition

      $ifcondition = '"eins" == "zwei"';

      $ifcondition = "return ".$ifcondition.";";
      if(!eval($ifcondition)) echo "FALSCH!";

      Kommentar


      • #4
        Das ist so ziemlich die beschissenste Lösung die es gibt. Benutze NIEMALS eval.

        Erklär mal wo diese komische $ifcondition herkommt und was du damit vor hast. true und false kann man auf vielen Wegen erzeugen.
        Windows Server gehören NICHT ins Internet!

        Dildo? Dildo!

        Kommentar


        • #5
          Der Inhalt von $ifcondition stammt von mir ohne Usereingabe oder sonstwas. Ist in der hinsicht also sicher. Wird aber aufgrund des codes darüber ein string bleiben müssen, weshalb ich den Vorschlag von VPh es direkt als boolean aufzuschreiben nicht nutzen kann

          Welche alternativen kennst du denn?

          Kommentar


          • #6
            Dazu müsste man jetzt vermutlich wissen, was du da eigentlich machst und warum das ein String bleiben muss.

            Kommentar


            • #7
              ich denke trollface wollte das einfach nur wissen weil man in eval auch anderen php code ausführen lassen kann was eine sicherheitslücke darstellen könnte

              warum es ein string bleiben muss; weil der code innerhalb einer function aufgerufen wird und sich ändert
              ungefähr so:

              PHP-Code:
              function ifstatement($statement) {
                  if(eval(
              "return ".$statement.";")) {
                      return 
              true;
                  } else {
                      return 
              false;
                  }
              }
              $rand rand(1,2);
              if(
              $rand == "1"$rand "Eins";
              if(
              $rand == "2"$rand "Zwei";
              $rand2 rand(1,2);
              if(
              $rand2 == "1"$rand2 "Eins";
              if(
              $rand2 == "2"$rand2 "Zwei";
              $statement '"'.$rand.'" == "'.$rand2.'"';
              if(
              ifstatement($statement)) {
                  echo 
              "Yes";
              } else {
                  echo 
              "No";

              Kommentar


              • #8
                So wie ich das sehe willst du bloß zwei Zahlen miteinander vergleichen:
                PHP-Code:
                if($rand == $rand2){
                   echo 
                "Yes";
                }else {
                   echo 
                "No";

                Was ich jedoch nicht verstehe, wieso wandelst du eine Zahl in einen Textstring um? O.o
                Wenn du die Zahl wirklich als Textstring brauchst / willst, dann mach das doch erst ganz zum Schluss!

                Kommentar


                • #9
                  Zitat von pascal123456789 Beitrag anzeigen
                  ich denke trollface wollte das einfach nur wissen weil man in eval auch anderen php code ausführen lassen kann was eine sicherheitslücke darstellen könnte
                  Einerseits das, aber andererseits auch, weil es sicher einen besseren Weg gibt. Eine Lösung wurde dir schon genannt.

                  Du machst dir das wirklich unnötig kompliziert mit deiner Funktion.
                  Fassen wir mal zusammen:
                  * Du hast 2 Zufallszahlen, die 1 oder 2 sein können
                  * Du willst beide miteinander vergleichen
                  * Am Ende soll Yes oder No ausgegeben werden.

                  Überleg dir deine Aufgabe ganz logisch.


                  Hier noch eine andere Lösung mit einer Vergleichsfunktion:

                  PHP-Code:
                  function ifstatement ($rand$rand2) {
                    if (
                  $rand == $rand2)
                      return 
                  true;
                    else
                      return 
                  false;
                  }

                  $rand rand(1,2);
                  $rand2 rand(1,2);

                  if(
                  ifstatement($rand$rand2)) {
                      echo 
                  "Yes";
                  } else {
                      echo 
                  "No";

                  Windows Server gehören NICHT ins Internet!

                  Dildo? Dildo!

                  Kommentar


                  • #10
                    Wobei das in #7 wohl wahrscheinlich nur ein Beispiel gewesen sein wird. Das hilft dann aber noch immer nicht bei der Frage nach echten Alternativen. Solche Einzelkonstrukte lassen sich losgelöst ja problemlos ohne Funktionsaufruf und eval() umschreiben.

                    Kommentar


                    • #11
                      Jap #7 war nur ein Beispiel! (Ich will nicht nur 2 Zahlen miteinander vergleichen >.>)
                      Nehmen wir einfach an, dass ich diese Variable habe
                      $ifcondition = '"eins" == "zwei"';

                      Wie erhalte ich daraus false, bzw. true?

                      Kommentar


                      • #12
                        Wieso muss es "true" oder "false" sein also boolean?

                        Theoretisch geht es mit einer Funktion:
                        PHP-Code:
                        function isEqual($var1$var2) {
                          if (
                        $var1 === $var2) {
                            return 
                        true;
                          }
                          
                          return 
                        false;  
                        }

                        var_dump(isEqual('eins''zwei')); 
                        Wenn du mehr als zwei Variabelen vergleichen willst könntest du es mit einem array machen oder die Parameter der Funktion via Funktion abrufen und so flexibel machen: http://php.net/manual/de/function.func-get-args.php
                        Gruß,
                        SebTM

                        Kommentar


                        • #13
                          Wie ich diese gekünstelten Beispiele hasse, am Ende kommt immer: "Ja, aber ich brauch das anders weil in der Wirklichkeit..."

                          Mach einen explode mit "==" als delimiter, und dann beim Vergleich der einzelnen Elemente trim() nicht vergessen.
                          Wenn du denn den Vergleichs Operator auch noch brauchst lässt sich der ja sicher mit preg_match() oder ähnlichem ermitteln. Das könnte aber durchaus komplex werden.

                          Nimm einfach eval
                          [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                          [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                          Kommentar


                          • #14
                            @SebTM es ist immer noch ein string! ich hab' KEINE 2 variablen die ich vergleichen könnte!!

                            @Vph
                            ja, ich hab im #1 post im text versucht zu erklären dass es ein string ist.
                            ich könnte schon explode nutzen, dann müsste ich aber auch >= == <= && || nutzen was echt recht lang werden könnte.

                            für mich läuft eval ansonsten gehen alle anderen lösungen nicht davon aus dass die if condition ein string ist

                            Kommentar


                            • #15
                              Verdammt hör auf die Leute hier zu verarschen!

                              Bring richtigen Code, keine Beispiele und keine nutzlosen Umschreibungen. Sonst kann und will dir keiner helfen. So gut wie immer gibt es eine einfachere Lösung. Wenn du eval brauchst, kannst du davon ausgehen, dass du größeren Mist im Code hast.
                              Windows Server gehören NICHT ins Internet!

                              Dildo? Dildo!

                              Kommentar

                              Lädt...
                              X