Tutorials
Leer je loops
Uitleg over loops. Hoe je op diverse manieren iets kunt herhalen (while loop, for loop, foreach loop en do while loop).
Pagina 1
Inleiding
Ik heb op phphulp nog geen tutorial over loops gezien, dus ik dacht: **DING** **DING** **DING** Ik ga er één schrijven.
Pagina 2
loops!?
Loops ja, deze tut gaat dus over loops als het niet door had. Welkom in loopy landscape!
Wat is een loop?
Een loop is een lus. Dezelfde actie word uitgevoerd en opnieuw uitgevoerd, totdat een bepaalde voorwaarde is berijkt. Welk dat deze voorwaarde is dat kan je instellen wanneer je de loop opvraagt. Als je niet uitkijkt, blijft de loop oneindig doorgaan!!!
Waarom gebruikt men een loop
Soms gebeurd het dat je dezelfde actie meerdere keren na elkaar moet uitvoeren. Je wilt bijvoorbeeld dat je elke record van in de db onder elkaar word weergeven, dan doe je dit met een loop.
De volgende dingen komen voor:
Voorwaarden
Argumenten
Commandos
Expressies
LET OP!!!
Zolang de voorwaarde van een loop niet false worden de commandos in de loop herhaald en herhaald. Dit kan zeer belastend zijn voor de server waar je het script op draait. Ook zijn loops niet de snelste weg om ergens te komen. Pas hier dus mee op: gebruik alleen een loop wanneer het strict noodzakelijk is.
Wat is een loop?
Een loop is een lus. Dezelfde actie word uitgevoerd en opnieuw uitgevoerd, totdat een bepaalde voorwaarde is berijkt. Welk dat deze voorwaarde is dat kan je instellen wanneer je de loop opvraagt. Als je niet uitkijkt, blijft de loop oneindig doorgaan!!!
Waarom gebruikt men een loop
Soms gebeurd het dat je dezelfde actie meerdere keren na elkaar moet uitvoeren. Je wilt bijvoorbeeld dat je elke record van in de db onder elkaar word weergeven, dan doe je dit met een loop.
De volgende dingen komen voor:
Voorwaarden
Argumenten
Commandos
Expressies
LET OP!!!
Zolang de voorwaarde van een loop niet false worden de commandos in de loop herhaald en herhaald. Dit kan zeer belastend zijn voor de server waar je het script op draait. Ook zijn loops niet de snelste weg om ergens te komen. Pas hier dus mee op: gebruik alleen een loop wanneer het strict noodzakelijk is.
Pagina 3
Loop: while()
While-loop
Een whileloop voert de commandos uit tot de waarde die je hebt meegegeven false retourneerd. Zolang dat dit true is, worden de commandos opnieuw en opnieuw uitgevoerd. Elke keer voordat me naan de commandos begint word de waarde opnieuw gecontroleerd. Je kan dus makkelijk iets van 1 tot 10 laten tellen hiermee. Een voorbeeldje:
<?php
$nr = 0;
while ($nr < 10) //Opent een while loop waarvan de commandos uitgevoerd worden totdat $nr gelijk is aan 10.
{
$nr++;
echo $nr.'</br >';
} /*dit geeft:
1
2
3
4
5
etc... tot en met 10*/
?>
Syntax:
while (voorwaarde)
{
commandos
}
Je gebruikt while() vooral bij mysql, want daarmee kan je makkelijk records weergeven.
Mysql voorbeeld:
<?php
print 'De laatste nieuwe dieeten:<br /><br />';
/*
we gaan ervanuit dat de headers en de open tags(<html><head> etc..) al geprint zijn en de tabel al gecreeerd is
de tabel die 'dieet' heet heeft de volgende kolommen:
id - naam - eten - drinken - snelheid
*/
//maak een connectie(wel zo handig) en selecteer een database
$temp_var = mysql_connect ("host", "username", "password") or die(mysql_error());
mysql_select_db("database_naam");
//maak een query, en voer hem uit!
$sql = "SELECT * FROM `dieet` ORDER BY `id` DESC;"; //haal alles uit tabel 'dieet', en sorteer aflopend op 'id'
$result = mysql_query($sql) or die(mysql_error());
//en nu waar deze tut over gaat: de loop
//ik gebruik bij deze objecten, en geen arrays
//straks, als de while loop uitgevoerd wordt doet ie dit:
// iedere keer dat er een rij is, doet hij wat er is die loop staat
// we gebruiken een while loop omdat dat de handigste manier is
while ($obj = mysql_fetch_object($result)) {
print '<!-- '.$obj->id.' -->'; //kan handig zijn met debuggen
print 'Naam van het dieet: '.$obj->naam.'<br />';
print 'Verboden te eten: '.$obj->eten.'<br />';
print 'Verboden te drinken: '.$obj->drinken.'<br />';
print 'Met dit dieet heb je een strak buikje in '.$obj->snelheid.' weken!!';
print '<br /><br />';
}
mysql_free_result($result); //geheugen leegmaken
mysql_close_connection($temp_var); //connectie sluiten, en script is klaar!
?>
Een whileloop voert de commandos uit tot de waarde die je hebt meegegeven false retourneerd. Zolang dat dit true is, worden de commandos opnieuw en opnieuw uitgevoerd. Elke keer voordat me naan de commandos begint word de waarde opnieuw gecontroleerd. Je kan dus makkelijk iets van 1 tot 10 laten tellen hiermee. Een voorbeeldje:
<?php
$nr = 0;
while ($nr < 10) //Opent een while loop waarvan de commandos uitgevoerd worden totdat $nr gelijk is aan 10.
{
$nr++;
echo $nr.'</br >';
} /*dit geeft:
1
2
3
4
5
etc... tot en met 10*/
?>
Syntax:
while (voorwaarde)
{
commandos
}
Je gebruikt while() vooral bij mysql, want daarmee kan je makkelijk records weergeven.
Mysql voorbeeld:
<?php
print 'De laatste nieuwe dieeten:<br /><br />';
/*
we gaan ervanuit dat de headers en de open tags(<html><head> etc..) al geprint zijn en de tabel al gecreeerd is
de tabel die 'dieet' heet heeft de volgende kolommen:
id - naam - eten - drinken - snelheid
*/
//maak een connectie(wel zo handig) en selecteer een database
$temp_var = mysql_connect ("host", "username", "password") or die(mysql_error());
mysql_select_db("database_naam");
//maak een query, en voer hem uit!
$sql = "SELECT * FROM `dieet` ORDER BY `id` DESC;"; //haal alles uit tabel 'dieet', en sorteer aflopend op 'id'
$result = mysql_query($sql) or die(mysql_error());
//en nu waar deze tut over gaat: de loop
//ik gebruik bij deze objecten, en geen arrays
//straks, als de while loop uitgevoerd wordt doet ie dit:
// iedere keer dat er een rij is, doet hij wat er is die loop staat
// we gebruiken een while loop omdat dat de handigste manier is
while ($obj = mysql_fetch_object($result)) {
print '<!-- '.$obj->id.' -->'; //kan handig zijn met debuggen
print 'Naam van het dieet: '.$obj->naam.'<br />';
print 'Verboden te eten: '.$obj->eten.'<br />';
print 'Verboden te drinken: '.$obj->drinken.'<br />';
print 'Met dit dieet heb je een strak buikje in '.$obj->snelheid.' weken!!';
print '<br /><br />';
}
mysql_free_result($result); //geheugen leegmaken
mysql_close_connection($temp_var); //connectie sluiten, en script is klaar!
?>
Pagina 4
Loop: for()
Dit is ineens veel ingewikkelder. In deze loop moet je 3 dingen meegeven: expressies. Hieronder een overzicht:
- Expressie 1: Dit word aan het begin van de loop uitgevoerd. Dit is dus het eerste commando, dat slechts 1 keer word uitgevoerd.
- Expressie 2: De voorwaarde. Zolang deze true retourneerd worden de commandos verder uitgevoerd.
- Expressie 3: Nadat de commandos zijn uitgevoerd word deze expressie telkens uitgevoerd.
Ook hier plaats ik een voorbeeld: dit doet hetzelfde als mijn voorbeeld bij de while lus, meer bepaald optellen van 1 tot 10 en deze cijfers weergeven.
<?php
//Opent een for loop waarvan de commandos
// worden uitgevoerd tot $nr gelijk is aan 10. De beginwaarde is 1.
//Want er staat bij de eerste expressie: $nr = 1
//Dus nummer is gedefineerd
//En dan kijk ie, is nummer kleiner of gelijk aan 10,
//dan voer ik expressies 3 uit, en voer ik de loop uit
//en expressie 3 zegt: doe er een bij, bij nummer
//of makkelijker: $nr = $nr + 1
for ($nr = 1; $nr <= 10; $nr++)
{
echo $nr.'<br />';
}
?>
Syntax:
for (exp1; exp2; exp3)
{
commandos
}
- Expressie 1: Dit word aan het begin van de loop uitgevoerd. Dit is dus het eerste commando, dat slechts 1 keer word uitgevoerd.
- Expressie 2: De voorwaarde. Zolang deze true retourneerd worden de commandos verder uitgevoerd.
- Expressie 3: Nadat de commandos zijn uitgevoerd word deze expressie telkens uitgevoerd.
Ook hier plaats ik een voorbeeld: dit doet hetzelfde als mijn voorbeeld bij de while lus, meer bepaald optellen van 1 tot 10 en deze cijfers weergeven.
<?php
//Opent een for loop waarvan de commandos
// worden uitgevoerd tot $nr gelijk is aan 10. De beginwaarde is 1.
//Want er staat bij de eerste expressie: $nr = 1
//Dus nummer is gedefineerd
//En dan kijk ie, is nummer kleiner of gelijk aan 10,
//dan voer ik expressies 3 uit, en voer ik de loop uit
//en expressie 3 zegt: doe er een bij, bij nummer
//of makkelijker: $nr = $nr + 1
for ($nr = 1; $nr <= 10; $nr++)
{
echo $nr.'<br />';
}
?>
Syntax:
for (exp1; exp2; exp3)
{
commandos
}
Pagina 5
Loop: foreach()
Foreach-loop
Hiermee kan je makkelijk door een array gaan. In deze loop zijn er 2 verschillende syntaxxed. De tweede is gelijk aan de eerste maar werkt met een handige uitbreiding. De syntaxis is als volgt:
foreach(array as $waarde)
foreach(array as $key => $waarde)
Vaag, hè?
De eerste loopt door de array die is aangegeven in het begin van de syntax. Elke keer als de verdere commandos worden uitgevoerd is er een variable met de waarde van dat item: $waarde. De volgende keer word het volgende element opgehaald.
De tweede werkt grotendeels hetzelfde. Het enige verschil is dat er 1 extra variable beschikbaar is: $key. In deze variable vind je de naam van dat item in de array.
Voorbeeldje 1(van type 1):
<?php
$array = array(
"HTML",
"PHP",
"JS Script",
"ASP",
"SQL"
);
print "Wij hebben van de volgende talen tutorials:<br /><br />";
foreach ($array as $taal) {
print $taal;
print '<br />';
}
//dit print:
//Wij hebben van de volgende talen tutorials:
//
//HTML
//PHP
//JS script
//ASP
//SQL
?>
Voorbeeldje 2(van type 2):
<?php
$array = array(
"humor" => "1",
"grappig" => "2",
"funny" => "3"
); //In deze array zijn er 3 elementen genaamd humor, grappig en funny. Deze bevatten de waardes 1,2,3.
print "We hebben hier wat waardes uit een array! <br /><br />";
foreach($array as $key => $waarde) {
echo("De waarde met de naam ".$key." in de array is gelijk aan ".$waarde.".<br>");
}
//dit print:
//We hebben wat waardes uit een aray!
//
// De waarde met de naam humor in de array is gelijk aan 1.
// De waarde met de naam grappig in de array is gelijk aan 2.
// De waarde met de naam funny in de array is gelijk aan 3.
?>
Hiermee kan je makkelijk door een array gaan. In deze loop zijn er 2 verschillende syntaxxed. De tweede is gelijk aan de eerste maar werkt met een handige uitbreiding. De syntaxis is als volgt:
foreach(array as $waarde)
foreach(array as $key => $waarde)
Vaag, hè?
De eerste loopt door de array die is aangegeven in het begin van de syntax. Elke keer als de verdere commandos worden uitgevoerd is er een variable met de waarde van dat item: $waarde. De volgende keer word het volgende element opgehaald.
De tweede werkt grotendeels hetzelfde. Het enige verschil is dat er 1 extra variable beschikbaar is: $key. In deze variable vind je de naam van dat item in de array.
Voorbeeldje 1(van type 1):
<?php
$array = array(
"HTML",
"PHP",
"JS Script",
"ASP",
"SQL"
);
print "Wij hebben van de volgende talen tutorials:<br /><br />";
foreach ($array as $taal) {
print $taal;
print '<br />';
}
//dit print:
//Wij hebben van de volgende talen tutorials:
//
//HTML
//PHP
//JS script
//ASP
//SQL
?>
Voorbeeldje 2(van type 2):
<?php
$array = array(
"humor" => "1",
"grappig" => "2",
"funny" => "3"
); //In deze array zijn er 3 elementen genaamd humor, grappig en funny. Deze bevatten de waardes 1,2,3.
print "We hebben hier wat waardes uit een array! <br /><br />";
foreach($array as $key => $waarde) {
echo("De waarde met de naam ".$key." in de array is gelijk aan ".$waarde.".<br>");
}
//dit print:
//We hebben wat waardes uit een aray!
//
// De waarde met de naam humor in de array is gelijk aan 1.
// De waarde met de naam grappig in de array is gelijk aan 2.
// De waarde met de naam funny in de array is gelijk aan 3.
?>
Pagina 6
Loop: do while()
Deze loop is niet zo bekend en ook niet vaak gebruikt. Je hoefd deze loop niet te begrijpen om toch complexe scripts te schrijven.
Syntax:
$waarde = een getal;
do {
commandos
} while ( $expressie );
Voorbeeld:
<?php
$i = 1;
do {
echo $i;
$i++;
} while ( $i < 10 );
?>
dit weergeeft ook 1 t/m 10, alleen bij een do-while wordt de lus ALTIJD 1 keer doorlopen voor de eerste check wordt gedaan
surf voor meer info naar:
**TADAA** http://nl3.php.net/do_while
Syntax:
$waarde = een getal;
do {
commandos
} while ( $expressie );
Voorbeeld:
<?php
$i = 1;
do {
echo $i;
$i++;
} while ( $i < 10 );
?>
dit weergeeft ook 1 t/m 10, alleen bij een do-while wordt de lus ALTIJD 1 keer doorlopen voor de eerste check wordt gedaan
surf voor meer info naar:
**TADAA** http://nl3.php.net/do_while
Reacties
0