Thread: PHP: Static
-
22-04-2004, 19:11 #1Approved 9-lifer
- 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...
Dit werkt dus langs geen kanten.. Het is trouwens volledig nutteloos, ik wil gewoon weten of het mogelijk is..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();
?>
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?
BvDit werkt niet maar is het op een andere manier mogelijk?PHP Code:for ($a!=10) {
Test();
}
Vraag meer uitleg als de uitleg of vragen niet duidelijk zijn..
THXNintendo ID & PSN & Xbox Live & Steam: FiFtyEurono votes
-
-
22-04-2004, 19:18 #2Approved 9-lifer
- Registered
- 15/08/03
- Location
- Moorsele
- Posts
- 2,552
- iTrader
- 10 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/18
Bij deze
is dit het resultaat...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>';
?>
Waarom staat het cijfer telkens voor de zin?0De teller staat op
1De teller staat op
2De teller staat op
3De teller staat op
4De teller staat op
5De teller staat opNintendo ID & PSN & Xbox Live & Steam: FiFtyEurono votes
-
22-04-2004, 19:45 #3Member
- 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
-
22-04-2004, 19:52 #4Approved 9-lifer
- 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: FiFtyEurono votes
-
22-04-2004, 20:23 #5Member
- Registered
- 12/10/02
- Location
- mars
- Posts
- 14,319
- iTrader
- 2 (100%)
- Mentioned
- 0 Post(s)
- Reputation
- 0/0
logisch dat dit niet werkt he! for aanvaard 3 parameters, hier moet je while hebben of dit:PHP Code:for ($a!=10) {
Test();
}
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:
zo wordt (simpel gezegd) de functie-aanroep bij het uitvoeren van de code 'vervangen' door zijn return-valuePHP Code:function Test()
{
static $a = 0;
return $a++;
}
echo "nummer: ".Test();
zal in dit geval dus Nummer: 0 als output geven.no votes
