Ankündigung

Einklappen
Keine Ankündigung bisher.

Variablen prüfen

Einklappen

Neue Werbung 2019

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

  • Variablen prüfen

    Hallo

    In einem nicht gerade unbekannten System finde ich immer wieder solche Teile:

    PHP-Code:
    if (isset($var)) {
       
    $example $var[0];
    }

    if (
    $example && $config->get($example)) { 


    Ich war der Meinung, dass wenn $var nicht gesetzt ist, es in diesem Fall zu einem Notice kommen würde, weil $example nicht definiert ist. Hat sich das irgendwann geändert, oder macht man das heute so?
    mMn. müsste man das doch mit isset() prüfen...
    Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.


  • #2
    Du musst schon den gesamten Code im Zusammenhang sehen und nicht nur die handvoll Zeilen welche du gepostet hast. $example kann hunderte Zeilen zuvor irgendwo definiert sein. Aus den Zeilen für sich betrachtet kann ich auch keinen richtigen Sinn erkennen.
    PHP-Klassen auf github

    Kommentar


    • #3
      Es geht hierbei nur um die Logik. Da dieses Beispiel aus einer foreach-Schleife kommt, kann zuvor nichts definiert sein.

      PHP-Code:
      foreach ($modules as $module) {
         
      $part explode('.'$module['code']);
         
         if (isset(
      $part[0])) {
            
      $code $part[0];
         }
         
         if (
      $code && $this->config->get($code '_status')) { 
            
      //do something          
         
      }

      Das ist die gekürzte Version vom Original.
      Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

      Kommentar


      • #4
        Wieso kann vorher "nichts definiert sein"? Natürlich geht das:
        PHP-Code:
        $code 123;
        foreach (
        range(11) as $var) {
            
        var_dump($code); // Zeigt den Inhalt der Variable, 123, an

        Eine (foreach-)Schleife besitzt keinen eigenen Scope, d. h. kann keine eigenen lokalen Variablen besitzen.

        Kommentar


        • #5
          Danke, das ist mir natürlich klar. Aber in meinem Beispiel ist zuvor nichts definiert. Und das ändert auch nichts an meiner Frage...
          Wäre relevanter Code zuvor, hätte ich diesen natürlich gepostet. Aber das erste Vorkommen der Var ist eben erst in der IF
          Der Unterschied zwischen dem richtigen Wort und dem beinahe richtigen ist derselbe Unterschied wie zwischen dem Blitz und einem Glühwürmchen.

          Kommentar


          • #6
            PHP-Code:
            if (isset($var)) {
               
            $example $var[0];

            Dies kommt doch sowieso zu einem Fehler wenn $var[0] nicht existiert.

            Müsste doch wenn schon so sein
            PHP-Code:
            if (isset($var[0])) {
               
            $example $var[0];

            Aber das ganze sieht ja irgendwie nicht so gut aus.

            Kommentar


            • #7
              Ich war der Meinung, dass wenn $var nicht gesetzt ist, es in diesem Fall zu einem Notice kommen würde, weil $example nicht definiert ist.
              Ja das ist korrekt.


              PHP-Code:
              <?php

              if (isset($var)) {
                 
              $example $var[0];
              }

              if (
              $example) { }
              -> Notice: Undefined variable: example in ... on line 7

              Kommentar

              Lädt...
              X