Ankündigung

Einklappen
Keine Ankündigung bisher.

$i++ in while

Einklappen

Neue Werbung 2019

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

  • $i++ in while

    while($einarray[$i]) {
    $i++;
    }

    $i hat nach der Schleife den Wert 0. Was kann ich dagegen tun? Und warum passiert das?

    Danke


  • #2
    Dann wird i++ wohl nie ausgeführt. Dann ist die While-Bedingung wohl schon beim ersten Test nicht erfüllt.

    Kommentar


    • #3
      Irgendwas stimmt da nicht...

      PHP-Code:
          $signaturen=explode("|"$signatur);
          while(
      $signaturen[$i]) {
              
      $i++;
          }
          
      $select=rand(0$i);

          return 
      $signaturen[$select]; 
      Das ganze steckt in einer Funktion. $signatur wird erfolgreich ausgelesen.

      $signaturen[0] ist auch gefüllt.

      Kommentar


      • #4
        Also das geht insgesamt anders besser. Aber erstmal eine Runde "wie finde ich den Fehler"
        PHP-Code:
        error_reporting(E_ALL);
        ini_set('display_errors'1);

        $signaturen=explode("|"$signatur);
        var_dump($i);
        var_dump($signaturen[$i]);
        while(
        $signaturen[$i]) {
          
        $i++;
        }
        $select=rand(0$i);

        return 
        $signaturen[$select]; 

        Kommentar


        • #5
          Variable i

          Kann eine Variable per $var++; überhaupt hochgezählt werden, solang sie nicht vorher definiert wurde?
          lg Flo
          "Je größer die Insel des Wissens, desto länger die Küste der Verzweiflung!"

          Kommentar


          • #6
            Ja. PHP gibt eine Warnung aus und dann wird $i=0 gesetzt.
            Das kann man auch schnell mal selbst nachprüfen.
            PHP-Code:
            <?php
            error_reporting
            (E_ALL);
            ini_set('display_errors'1);

            $i++;
            echo 
            $i;
            Notice: Undefined variable: i in ... on line 5
            1

            Kommentar


            • #7
              In Webspell wird ein klein wenig zu viel reportet, deswegen nehme ich das lieber raus.

              Bei dem var_dump() bekomme ich pro Signatur 4 mal NULL ausgegeben.

              Kommentar


              • #8
                Dann teste es halt so
                PHP-Code:
                $oE error_reporting(E_ALL);
                $oD ini_set('display_errors'1);

                $signaturen=explode("|"$signatur);
                var_dump($signatur);
                var_dump($signaturen);
                var_dump($i);
                var_dump($signaturen[$i]);
                while(
                $signaturen[$i]) {
                  
                $i++;
                }
                $select=rand(0$i);

                error_reporting($oE);
                ini_set('display_errors'$oD);

                return 
                $signaturen[$select]; 
                aber poste die genaue Ausgabe, copy&paste.

                Kommentar


                • #9
                  Code:
                  Warning
                  Code:
                  :  ini_set() has been disabled for security reasons in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 101
                  string(43) "text" array(1) {   [0]=>   string(43) "text" }
                  Notice:  Undefined variable: i in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 106
                  NULL 
                  Notice:  Undefined variable: i in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 107
                  
                  Notice:  Undefined index:   in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 107
                  NULL 
                  Notice:  Undefined variable: i in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 108
                  
                  Notice:  Undefined index:   in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 108
                  
                  Notice:  Undefined variable: i in /usr/export/www/vhosts/funnetwork/hosting/account/src/func/user.php on line 111

                  Kommentar


                  • #10
                    string(43) "text" array(1) { [0]=> string(43) "text" }
                    Oh, werden Deine Testsignaturen noch zum Patent angemeldet?

                    Kommentar


                    • #11
                      Naja, mir jetzt egal. Denk einfach darüber nach, wozu die var_dump()s genützt hätten und warum dann string(43) "text" nicht weiterhilft.

                      PHP-Code:
                      <?php
                      function f($signatur)
                      {
                       
                      $signaturen=explode('|'$signatur);
                       return 
                      $signaturen[array_rand($signaturen)];
                      }

                      for(
                      $i=0$i<10$i++)
                      {
                       echo 
                      f('a|b|c|d').' ';
                      }

                      Kommentar


                      • #12
                        Keine Ahnung, woher das jetzt kam.

                        Weißt du denn, warum meine Version nicht funktioniert, obwohl die Bedingung erfüllt war?

                        Kommentar


                        • #13
                          War sie nicht. $i war nicht definiert. $signaturen[NULL], undefined element, NULL, while() wird sofort abgebrochen.

                          Kommentar


                          • #14
                            Ähm mal na ganz blöde frage, diese merkwürdige while-schleife die nicht funktioniert, soll die nicht ganz einfach das selbe ergebnis liefern wie count() ??

                            Kommentar


                            • #15
                              Bestimmt. Tut sie aber so oder so nicht.

                              Kommentar

                              Lädt...
                              X