Archief - PHP: Static

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

50Euro

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

PHP:
<?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:
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

50Euro

Legacy Member
Bij deze
PHP:
<?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?

DarkBone

Legacy Member
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.

50Euro

Legacy Member
Kan je het iets simpeler uitleggen?

Welke Functie retourneert niets?

killgore

Legacy Member
PHP:
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:
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.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan