1+2+3+4+5+6=21 met while loop

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

PHP Student

PHP Student

19/01/2015 19:04:56
Quote Anchor link
Hallo

Ik ben beginnend aan het aanleren van PHP en kom direct al met een probleem aanwaaien waar ik maar niet uitraak.
Deze opdracht heb ik wel kunnen uitvoeren met een for loop zoals hieronder aangebracht.Het werkt met ingeven van een nr zoals bv 6 op een form , waaruit dan bovenstaande uitkomst het gevolg is. Maar hetzelfde zou moeten gerealiseerd met een while loop.
Met dank voor jullie welwillende medewerking.

Quote:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

$num
= $_GET["num"];
$getal = '';
$total = 0;
 
for($i=1;$i<=$num;$i++){
 
   if($i != 1){
      $getal .= " + ".$i;
   }
else{
      $getal .= $i;
   }

 
   $total += $i;
}

 
    if($total <= 20){

     print "Dit getal is niet hoger dan 20 !<br>";

 }
else{

     print "Dit getal is hoger dan 20 !<br>";
     }


print $getal . " = " . $total ;

?>
Gewijzigd op 19/01/2015 19:11:41 door PHP Student
 
PHP hulp

PHP hulp

22/12/2024 04:06:33
 
Pipo Clown

Pipo Clown

19/01/2015 19:15:34
Quote Anchor link
Laat eens zien wat je zelf al geprobeerd hebt met de While-lus ?
 
PHP Student

PHP Student

19/01/2015 19:50:35
Quote Anchor link
Ik raak er niet uit , toch bedankt voor de moeite.
Gewijzigd op 19/01/2015 20:17:29 door PHP Student
 
Robert Steegh

Robert Steegh

19/01/2015 21:55:29
Quote Anchor link
Een while lus heeft uit zichzelf geen einde, een for lus wel (telt automatisch). In de while lus zul je er zelf voor moeten zorgen dat de conditie om uit de lus te raken optreedt.
Voor de lus: Teller = 1
In de lus: Teller = Teller + 1
While conditie Teller < waarde
 
PHP Student

PHP Student

19/01/2015 22:56:20
Quote Anchor link
Dat is wat ik niet snap aan die while lus. Hoe moet je de berekening uitvoeren ? Als je een opzoeking doet op het net kom je altijd uit op hetzelfde voorbeeld.

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?
$i
= 1;
while ($i <= 10){
    echo $i;
    $i++;
}

?>
Gewijzigd op 19/01/2015 23:01:22 door PHP Student
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/01/2015 23:22:30
Quote Anchor link
Robert Steegh op 19/01/2015 21:55:29:
Een while lus heeft uit zichzelf geen einde, een for lus wel (telt automatisch). In de while lus zul je er zelf voor moeten zorgen dat de conditie om uit de lus te raken optreedt.
Voor de lus: Teller = 1
In de lus: Teller = Teller + 1
While conditie Teller < waarde


Helaas is dit niet geheel juist. Een for lus biedt een voorziening voor een teller maar telt zeker niet automatisch. Eigenlijk zijn een for en een while lus identiek behalve in hun notatie (of schrijfwijze). Ze doen exact hetzelfde.

kijk maar eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

for($i = 0 ; $i < 10 ; $i++) {
    echo 'hallo<br>';
}


?>


doet precies hetzelfde als

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$i
= 0;

for(;$i < 10;) {
    echo 'hallo<br>';
    $i++;
}


?>


doet precies hetzelfde als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$i
= 0;

while($i < 10) {
    echo 'hallo<br>';
    $i++;
}


?>
Gewijzigd op 19/01/2015 23:26:18 door Frank Nietbelangrijk
 
PHP Student

PHP Student

19/01/2015 23:36:39
Quote Anchor link
Zou dit het kunnen zijn ?

Quote:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php

$num
= $_GET["num"];
$getal = '';
$total = 0;
$i=0;

while ($i<$num) {

    $i++;

     if($i != 1){
      $getal .= " + ".$i;
   }
else{
      $getal .= $i;
   }

 
   $total += $i;
}


if($total <= 20){

     print "Dit getal is niet hoger dan 20 !<br>";

 }
else{

     print "Dit getal is hoger dan 20 !<br>";
     }


print $getal . " = " . $total ;

?>
 
Pipo Clown

Pipo Clown

19/01/2015 23:44:13
Quote Anchor link
Wanneer je dit runt, krijg je dan het gewenste resultaat ?

Zo ja, dan is dit een correcte oplossing.

Zo nee, wat gaat er mis ?
 
PHP Student

PHP Student

19/01/2015 23:46:34
Quote Anchor link
Ja , als ik dit run komt de juiste oplossing.
Bedankt voor de hulp.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/01/2015 23:48:53
Quote Anchor link
Ja ziet er goed uit. Misschien dat je $getal beter $berekening kunt noemen of iets dergelijks. Probeer je variabelen altijd een goede naam te geven.

Daarnaast kan het ietsje korter:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php

$num
= $_GET["num"];
$getal = '0';
$total = 0;
$i=0;

while ($i<$num) {

    $i++;

     if($i != 1){
      $getal .= " + ".$i;
   }

 
   $total += $i;
}


if($total <= 20){

     print "Dit getal is niet hoger dan 20 !<br>";

 }
else{

     print "Dit getal is hoger dan 20 !<br>";
     }


print $getal . " = " . $total ;

?>
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

20/01/2015 12:57:40
Quote Anchor link
Frank als je het in wilt korten moet je wel $i buiten de if laten, nu wordt 1 overgeslagen.
 
Robert Steegh

Robert Steegh

20/01/2015 17:57:44
Quote Anchor link
Een for en een while lus zijn zeker niet identiek. Waarom zou er anders een verschil zijn. In de while loop kun je zelf het begin en eind bepalen. Veel gebruikt is natuurlijk: while ($stmt->fetch()) -> Dit is in een for lus niet mogelijk, omdat zoals gezegd start, eind en "teller" van te voren moet worden meegegeven. De teller hoeft geen cijfer te zijn, maar wel een reeks.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/01/2015 20:04:58
Quote Anchor link
Robert,

bij een while loop bepaal je ook zelf het eind. Beter gezegd: je bepaalt wanneer de lus mag worden verlaten. en alhoewel minder logisch kan met een for lus ook de while($stmt->fetch()) prima doorlopen worden. Ik denk dat je niet goed naar mijn drie voorbeelden gekeken hebt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
for(;$row = $stmt->fetch_assoc();)
{

    echo $row['id'];
}

?>
Gewijzigd op 20/01/2015 20:07:41 door Frank Nietbelangrijk
 
Robert Steegh

Robert Steegh

20/01/2015 22:27:17
Quote Anchor link
Weer wat geleerd, grappig. Ik ben van oorsprong geen php programmeur (Pascal, Delphi, Basic). In de meeste andere programmeertalen zou het voorbeeld onmogelijk zijn.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

21/01/2015 13:10:52
Quote Anchor link
Ik weet niet zeker of de compilers van al die talen het pikken maar als we nu kijken wat de mogelijkheden zijn in de uiteindelijke machine instructies dan is dat eigenlijk alleen een IF (vergelijking) en een GOTO (springen naar een ander deel van de code). Alle routines in welke taal dan ook worden uiteindelijk herleid naar die twee.

Dus een if, else, while, do, foreach, switch, for lijken uiteindelijk als twee druppels water op elkaar.

Alleen omdat het voor de mens al gauw een spaghetti brei wordt hebben we al die lussen bedacht en wordt het voor ons beter leesbaar.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.