Thread: PHP: Static

  1. #1
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18

    PHP: Static

    Het volgende wou ik eens proberen bij wijze van oefening...

    PHP Code:
    <?php
    function Test()
    {
       static 
    $a 0;
       echo 
    $a;
       
    $a++;
    }
    for (
    $i=0$i!=11$i++) {
        
    Test();
        }
    echo 
    '<hr>';
    echo 
    "De teller staat op " $a;
    echo 
    '<hr>';
    echo 
    "De teller staat op " Test();
    ?>
    Dit werkt dus langs geen kanten.. Het is trouwens volledig nutteloos, ik wil gewoon weten of het mogelijk is..

    Kan ik op de één of andere manier "$a" uit die functie halen terwijl ze in de "for" lus zit?
    Of kan ik "$a" uit de functie gebruiken in men voorwaarde voor de "for" lus?

    Bv
    PHP Code:
    for ($a!=10) {
        
    Test();
        } 
    Dit werkt niet maar is het op een andere manier mogelijk?

    Vraag meer uitleg als de uitleg of vragen niet duidelijk zijn..

    THX
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  2. #2
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18
    Bij deze
    PHP Code:
    <?php
    function Test()
    {
       static 
    $a 0;
       echo 
    $a;
       
    $a++;
    }
    echo 
    'De teller staat op ' .Test();
    echo 
    '<br>';
    echo 
    'De teller staat op ' .Test();
    echo 
    '<br>';
    echo 
    'De teller staat op ' .Test();
    echo 
    '<br>';
    echo 
    'De teller staat op ' .Test();
    echo 
    '<br>';
    echo 
    'De teller staat op ' .Test();
    echo 
    '<br>';
    echo 
    'De teller staat op ' .Test();
    echo 
    '<br>';
    ?>
    is dit het resultaat...
    0De teller staat op
    1De teller staat op
    2De teller staat op
    3De teller staat op
    4De teller staat op
    5De teller staat op
    Waarom staat het cijfer telkens voor de zin?
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  3. #3

    Registered
    18/11/02
    Location
    Eke, België
    Posts
    2,448
    iTrader
    0
    Mentioned
    0 Post(s)
    Reputation
    0/0
    Die functie retourneert niets, hij keert niets terug naar het statement dat het oproepte, er wordt dus ook niks afgedrukt.

    De reden waarom je het getal voor andere de uitvoer ziet: de functie wordt uitgevoerd, binnen die functie zit een echo, die waarde wordt geprint, de functie is ten einde, keert niets terug, er wordt teruggekeerd naar de echo waarin de functie werd opgeroepen en nu wordt daar de output afgedrukt alvorens verder te gaan.
    no votes  

  4. #4
    50Euro's Avatar
    Registered
    15/08/03
    Location
    Moorsele
    Posts
    2,552
    iTrader
    10 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/18
    Kan je het iets simpeler uitleggen?

    Welke Functie retourneert niets?
    Nintendo ID & PSN & Xbox Live & Steam: FiFtyEuro
    no votes  

  5. #5

    Registered
    12/10/02
    Location
    mars
    Posts
    14,319
    iTrader
    2 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/0
    PHP Code:
    for ($a!=10) {
        
    Test();
        } 
    logisch dat dit niet werkt he! for aanvaard 3 parameters, hier moet je while hebben of dit:
    for(;$a!=10; )

    voor het feit van voor de zin:

    als je een echo doet wordt eerst de argumentaties (dus alles tussen echo en ; ) ge-evalueerd. Die string geeft geen problemen, maar dan kom je aan die functie.

    Binnen de functie heb je ook een aparte echo, die voorrang heeft op de gewone echo waarin die functie werd aangeroepen. Zo wordt dus eerst de functie-echo verwerkt en het getal getoond en dan pas die tekst.

    Om dit op te lossen kan je return-values gebruiken:
    PHP Code:
    function Test()
    {
       static 
    $a 0;
       return 
    $a++;

    zo wordt (simpel gezegd) de functie-aanroep bij het uitvoeren van de code 'vervangen' door zijn return-value

    echo "nummer: ".Test();
    zal in dit geval dus Nummer: 0 als output geven.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in