On Thu, 4 Jul 2002 13:36:07 +0200, Jesper Krogh wrote:
>In article <bnb8iuohrcvu7vfk3enostn09h6nbdqs5r@4ax.com>, Kurt Hansen wrote:
>> <?
>> $tal = 1;
>> while ($tal <= 10) echo ++$tal." ";
>> ?>
>>
>> giver følgende output:
>>
>> 2 3 4 5 6 7 8 9 10 11
>>
>> Hvorfor kommer 11 med, når jeg har bedt den om kun at fortsætte
>> sålænge $tal er mindre end eller lig med 10?
>
>fordi $tal hvor du tester er 10 også tæller du 10 en op til 11 og laver
>echo på den.
Ja undskyld, men det er altså lidt terapi til en newbie det her. Jeg
kan ikke tro andet, end at det volder andre nybegyndere vanskeligheder
at FORSTÅ hvad der der sker, så jeg vil tillade mig at trampe lidt
mere rundt i det. Man kommer jo ikke langt med bare at lære det udenad
- at sådan ER det bare.
>> <?
>> $tal = 1;
>> while ($tal <= 10) echo ++$tal." ";
>> ?>
Vi starter med at sætte variablen til værdien 1.
Dernæst sættes en løkke igang og den kører sålænge betingelsen om at
værdien må være mindre end eller lig med 10. Og så bliver jeg altså
knotten, når svinet alligevel slutter festligt af med at skrive 11.
Det første tal der udskrives må nødvendigvist blive 2, da
udgangspunktet er værdien 1, hvortil der som en start lægges 1. Og så
går det ellers slaw i slaw:
1 ++$tal =2 (tallet udskrives og vi validerer: betingelsen er opfyldt)
2 ++$tal =3 (tallet udskrives og vi validerer: betingelsen er opfyldt)
3 ++$tal =4 (tallet udskrives og vi validerer: betingelsen er opfyldt)
4 ++$tal =5 (tallet udskrives og vi validerer: betingelsen er opfyldt)
5 ++$tal =6 (tallet udskrives og vi validerer: betingelsen er opfyldt)
6 ++$tal =7 (tallet udskrives og vi validerer: betingelsen er opfyldt)
7 ++$tal =8 (tallet udskrives og vi validerer: betingelsen er opfyldt)
8 ++$tal =9 (tallet udskrives og vi validerer: betingelsen er opfyldt)
9 ++$tal =10 (tallet udskrives og vi validerer: betingelsen er
opfyldt)
10 ++$tal =11 (tallet udskrives og vi validerer: betingelsen er IKKE
opfyldt og processen stopper, men da er det for sent: tallet 11 er
allerede udskrevet).
Ahaaaa!!!
Er det sådan det skal forståes? Tilgiv mig min
hjerteskærende naivitet.
Men prøv så lige at bide spids på denne her:
<?
$tal=1000;
while ($tal>=10) {
$tal=$tal/5;
echo $tal." ";
}
?>
Den udskriver "200 40 8" - igen en postgang for sent. Lad os lige
prøve samme recept som før:
$tal (1000) divideres med 5 (ny værdi for $tal er dermed 200). Tallet
200 udskrives til skærmen, vi kører tilbage og konstaterer at
betingelsen er opfyldt.
$tal (200) divideres med 5 (ny værdi for $tal er dermed 40). Tallet 40
udskrives til skærmen, vi kører tilbage og konstaterer at betingelsen
er opfyldt.
$tal (40) divideres med 5 (ny værdi for $tal er dermed 8). Tallet 8
udskrives til skærmen, vi kører tilbage og konstaterer at betingelsen
IKKE er opfyldt, hvorfor processen stopper, men da er det for sent:
tallet 8 er allerede udskrevet.
Nå ja, øf, øf, øf, det var bare lige lidt mere massage til de små grå.
Disse Fårevejle-løkker skal man jo bruge hele tiden, så det er jo
vigtigt at få principperne banket fast
Venlig hilsen
Kurt Hansen