Avatar billede trp79 Nybegynder
04. marts 2006 - 13:16 Der er 7 kommentarer og
1 løsning

Hvorfor kan jeg ikke fange værdien af min variabel?

Hejsa
Jeg har understående kode. Problemet er at variablen $numberOfG jeg erklære øverst kan jeg ikke fange i min function echo_guess_form. Det virker fint hvis jeg parametre overføre den, men jeg forståer ikke lige hvorfor, den bliver fint sat i min form(i et hidden field) - håber nogen kan forklare det.

På forhånd tak, mvh
Torben

<html>
    <head>
        <title>Problem Set 4 - Random Numbers And Arrays</title>
        <link rel="stylesheet" type="text/css" href="../common.css" media="screen" />
    </head>
    <body>
        <div id="banner">
            <?php require("../banner.php"); ?>
        </div>

        <div id="indhold">
            <h1>Guess a number game</h1>
            <?php
                $guess = $_POST['userGuess'];
                $number = $_POST['numberToGuess'];
                $numberOfG = $_POST['numberOffGuesses'];
                if(!isset($number))    {
                    //Der er ikke sat noget nummer - nyt spil.
                    $number = getRandNr();
                    $numberOfG = 0;
                    echo "<p>Type in your guess</p>";
                } else {
                    //Så er der et nummer at gætte på.
                    if(isset($guess)) {
                        // og vi har også et gæt.
                        $numberOfG++;
                        echo_guess_form($guess, $number);
                    } else {
                        echo "<p>You have to type in a number</p>";
                    }
                }

                function echo_guess_form($guess, $number){
                    if ( !isset($number) && $number !=""){
                        $number = getRandNr();
                    }
                    else if ( $guess<$number ){
                        echo "<p>You guess was to low</p>";
                    }
                    else if ( $guess>$number ){
                        echo "<p>You guess was to high</p>";
                    }
                    else{
                        echo "<p>You guessed right!<br /></p>";
                        echo "<p>In your $numberOfG. attempt.</p>";
                    }
                }

                function getRandNr(){
                            return rand(1,99);
                }
            ?>
            <form action="guess.php" method="post" name="test" id="test">

                  <p>Enter your guess:
                    <input type="hidden" name="numberToGuess" id="numberToGuess" value="<?php echo $number; ?>" />
                    <input type="hidden" name="numberOffGuesses" id="numberOffGuesses" value="<?php echo $numberOfG; ?>" />
                  </p>

                  <input type="text" name="userGuess" id="userGuess" size="7" value="<?php echo $guess; ?>" />
                  <input type="submit" value="Guess" />
          </form>
            <p><a href="guess.php">New game</a></p>
            <p><a href="index.php">Back to index page</a></p>
        </div>
    </body>
</html>
Avatar billede erikjacobsen Ekspert
04. marts 2006 - 13:23 #1
function echo_guess_form($guess, $number){
      global $numberOfG;
      ...
    }
Avatar billede trp79 Nybegynder
04. marts 2006 - 13:27 #2
Men hvorfor? Jeg har jo erkæret $numberOfG øverst, hvor jeg henter værdien fra requestet.
Avatar billede erikjacobsen Ekspert
04. marts 2006 - 13:37 #3
Avatar billede Slettet bruger
04. marts 2006 - 13:37 #4
En funktion skal have global $foo, hvis du vil bruge en variabel deklareret udenfor funktionen inde i funktionen.
Avatar billede trp79 Nybegynder
04. marts 2006 - 15:55 #5
arh super - jeg har læst forkert i min bog :( der lige står lige præcis at global variables not are in scope inside functions... tja, sådan kan det jo gå ;o)

Erik du smider selvfølgelig bare et svar, hvis det nu skulle være, at du vil have point(du skal jo have budet :o)... ellers kan wicez jo smide et, da han var 2. hurtigst...

Mange tak for hjælpen til jer begge.
Avatar billede erikjacobsen Ekspert
04. marts 2006 - 17:11 #6
Nej tak.
Avatar billede Slettet bruger
04. marts 2006 - 17:23 #7
Det kommer her :)
Avatar billede Slettet bruger
04. marts 2006 - 23:53 #8
- Tak for points ;D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester