Ankündigung

Einklappen
Keine Ankündigung bisher.

wihle schleife hört nicht auf

Einklappen

Neue Werbung 2019

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

  • wihle schleife hört nicht auf

    ich hab folgendes script:
    Code:
    <?php
    $t1s1 = 8;
    
        function t1s1($t1s1){
        $t1=rand(1,4);
        $t2s4=100;
        $t2=rand(3,4);
       
        
        if($t1>$t2){
        	$t2s4=$t2s4-1;
        	echo "1 hat gewonnen.
    ";}
        else if($t1<$t2){
        	$t1s1=$t1s1-1;
        	echo "4 hat gewonnen.
    ";}
        else{
        	echo "unentschieden.
    ";}
        	echo $t1s1;
    
        	
    }
    
    while( $t1s1 >0){
    
        call_user_func("t1s1",$t1s1); 
    }
    
    ?>
    kann mir vielleicht jemand sagen wie ich die variable $t1s1 definieren muss, dass die Schleife mal ein ende hat oder was sonst der fehler ist. Danke schon mal im voraus.


  • #2
    ja hwieso machst du das $t1s1 >0 in einer While schleife??

    Du willst praktich wenn ich das richtig verstehe die Funktion von der Funktion aus aufrufen, richtig? also rekursiv!

    probiers mal so anstatt der while:
    PHP-Code:
    <?php
    if ($t1s1 >0call_user_func("t1s1",$t1s1);


    ?>
    Übrigens, nimm beim nächsten mal bitte den [PHP] Code und nicht den Normalen [CODE], ist übersichtlicher!

    Kommentar


    • #3
      die while schleife ist doch garnicht in der funktion

      Kommentar


      • #4
        ja wie wärs mit return in deiner funktion?

        Du gibst ja in deiner funktion nie einen Wert zurück!

        Wie soll sich dann der Wert von $t1s1 jemals ändern?
        sodas die While - Laufbedingung nicht mehr erfüllt ist...

        Kommentar


        • #5
          ja aber dann geht es ja nur einmal. DU hast am anfang den wert 8 für $t1s1 und wenn aber vier gewinnt dann soll $t1s1 immer weniger werden bis es null ist und dann soll die schleife beendet werden. Das klappt aber nicht. Wie kann ich dann sowas machen

          Kommentar


          • #6
            mach mal das: function t1s1($t1s1){ zu dem: function t1s1(&$t1s1){

            Kommentar


            • #7
              So wie dus hast, ist $t1s1 immer 8! also immer $t1s1>0 also läuft die schleife immer! endlos!


              PHP-Code:
              <?php
              $t1s1 
              8

                  function 
              t1s1($t1s1){ 
                  
              $t1=rand(1,4); 
                  
              $t2s4=100
                  
              $t2=rand(3,4); 
                  
                  
                  if(
              $t1>$t2){ 
                     
              $t2s4=$t2s4-1
                     echo 
              "1 hat gewonnen.
              "
              ;} 
                  else if(
              $t1<$t2){ 
                     
              $t1s1=$t1s1-1
                     echo 
              "4 hat gewonnen.
              "
              ;} 
                  else{ 
                     echo 
              "unentschieden.
              "
              ;} 
                     echo 
              $t1s1
              return 
              $t1s1//musst du aber noch genau definieren weis nicht genau was du willst
                      


              while( 
              $t1s1 >0){ 

                 
              $t1s1=call_user_func("t1s1",$t1s1); 
              }
              ?>

              Kommentar


              • #8
                return $t1s1; //musst du aber noch genau definieren weis nicht genau was du willst
                was muss ich da dann genáuer defineren? Ich hab noch nie was mit return gemacht.

                Kommentar


                • #9
                  ja welchen wert die funktion an dein Haupt skript zurück geben soll!

                  Denn $t1s1 in deinem Hauptskript und $t1s1 von deiner funktion sind nicht die gleichen Variabeln!!!!!

                  Also musst du entwerder mut Return oder mit Adresse (&) arbeiten!

                  Kommentar


                  • #10
                    aha...und wie würde das dann aussehen wenn ich $t1s1 mit return in mein hauptscript zurück geben will?

                    Kommentar


                    • #11
                      mann! hast dus einmal so ausprobiert wie ers geschrieben hat?

                      oder mal meins versucht?

                      Kommentar


                      • #12
                        ja mit
                        PHP-Code:
                        return $t1s1;
                        ?> 
                        funktionierts eben nicht

                        Kommentar


                        • #13
                          so wie ich es oben schon mal beschrieben habe! (return/while umändern)

                          ja was willst du genau mit deiner funktion machen? Das ist mir nicht ganz klar:

                          würde es aber mal so probieren:

                          PHP-Code:
                          <?php

                          function t1s1($t1s1,$t2s4){  // du musst auch noch $t2s4 übergeben
                              
                          $t1=rand(1,4);  
                              
                          $t2s4=100;  
                              
                          $t2=rand(3,4);  
                               
                               
                              if(
                          $t1>$t2){  
                                 
                                 echo 
                          "1 hat gewonnen.
                          "
                          ; return $t2s4-1;
                          }  
                              else if(
                          $t1<$t2){  
                                  
                                 echo 
                          "4 hat gewonnen.
                          "
                          ;
                          return 
                          $t1s1-1
                          }  
                              else{  
                                 echo 
                          "unentschieden.
                          "
                          ;}  
                                 return 
                          $t1s1;  

                                   
                          }  
                          ?>
                          Oder du machst es wie Zimd beschrieben hat:
                          mach mal das: function t1s1($t1s1){ zu dem: function t1s1(&$t1s1){
                          Wenn du das so beim Funktionskopf machst, sollten eigentlich die Variabeln $t1s1 die gleichen wie im hauptskript sein. bin mir aber nicht ganz 100% sicher da ich damit schon lange nicht mehr gearbeitet habe. Das gleich muss du halt auch noch mit den anderen Variabeln machen die du im Skript und Hauptprogramm verwendest!

                          Kommentar


                          • #14
                            PHP-Code:
                            <?php
                            $t1s1
                            =8;
                            $t2s4=100;

                            function 
                            t1s1($t1s1$t2s4){  
                                
                            $t1=rand(1,4);   
                                  
                                
                            $t2=rand(3,4);   
                                  
                                  
                                if(
                            $t1>$t2){   
                                    
                                   echo 
                            "1 hat gewonnen.
                            "
                            ; return $t2s4-1
                            }   
                                else if(
                            $t1<$t2){   
                                     
                                   echo 
                            "4 hat gewonnen.
                            "

                            return 
                            $t1s1-1;  
                            }   
                                else{   
                                   echo 
                            "unentschieden.
                            "
                            ;
                                   return 
                            $t1s1;   }

                                      
                            }   


                            while( 
                            $t1s1 >0){
                               
                                
                            call_user_func("t1s1",$t1s1$t2s4); 
                                echo 
                            $t1s1;
                            }

                            ?>
                            ich habs jetzt so brobiert wie du es gesagt hast und es geht einfach nicht. die whileschleife macht immer weiter

                            Kommentar


                            • #15
                              ja weil du die $t1s1 im hauptprogramm nie updatest!
                              while( $t1s1 >0){

                              call_user_func("t1s1",$t1s1, $t2s4);
                              echo $t1s1;
                              }
                              so müsste es sein:
                              PHP-Code:
                              <?php
                              while( $t1s1 >0){ 
                                  
                                  
                              $t1s1=call_user_func("t1s1",$t1s1$t2s4);  
                                  echo 
                              $t1s1


                              ?>
                              du musst schon den return wert irgendwo hineinspeichern, in hauptprogramm $t1s1, denn sonst bleibt $t1s1 immer gleich also läuft die schleife wieder endlos!

                              Aber: du returnst in deiner funktion auch einmal $t2s4. Ich weis ja nicht genau was du machen willst! das mit return $t2s4 habe ich nur so mal interpretiert aus deiner original finktion.

                              probiers mal so:
                              nimm deine ganz normale funktion wie du sie am anfang hattest, also ohne return usw. dann änderst du den Funktionskopf so um:
                              function t1s1(&$t1s1,&$t2s4)

                              probiers so mal ...
                              den mir scheint du verstehst das mit den return werten nicht so ganz

                              Kommentar

                              Lädt...
                              X