Nested For loop 2
Mijn vorige post ging ook over een nested loop. Ik ben nu met een andere bezig.
Het figuur wat ik na moet maken is:
********
********
******
******
****
****
**
**
Het is mij zelf gelukt om dit te realiseren met een for loop maar denk dat de code een stuk korter kan.
Ik zal mijn denkwijze proberen uit te leggen en dan daarna mijn code.
Het figuur bestaan uit 8 regels dus dacht 1 hoofd loop die 8 keer iets doet van hoog naar laag.
En doormiddel van een if elseif statement te controleren op welke regels ik ben en dan afdrukken van de sterren.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
for ($i = 8; $i >= 1; $i--) {
if ($i >= 7) {
for ($x = 1; $x <= 8; $x++) {
echo "*";
}
}
elseif ($i >= 5) {
for ($x = 1; $x <= 6; $x++) {
echo "*";
}
}
elseif ($i >= 3) {
for ($x = 1; $x <= 4; $x++) {
echo "*";
}
}
elseif ($i >= 1) {
for ($x = 1; $x <= 2; $x++) {
echo "*";
}
}
echo "<br/>";
}
if ($i >= 7) {
for ($x = 1; $x <= 8; $x++) {
echo "*";
}
}
elseif ($i >= 5) {
for ($x = 1; $x <= 6; $x++) {
echo "*";
}
}
elseif ($i >= 3) {
for ($x = 1; $x <= 4; $x++) {
echo "*";
}
}
elseif ($i >= 1) {
for ($x = 1; $x <= 2; $x++) {
echo "*";
}
}
echo "<br/>";
}
Graag zie ik kritiek, tips, tops en aanmerkingen tegemoet, zodat ik er weer meer van kan leren.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
for($i = 8; $i >= 2; $i -= 2){
echo str_repeat(str_repeat('*', $i).'<br>', 2);
}
?>
for($i = 8; $i >= 2; $i -= 2){
echo str_repeat(str_repeat('*', $i).'<br>', 2);
}
?>
Bedankt voor de reacties wist niet dat je in de for loop gebruik mocht maken van $i-=2. Weer wat geleerd.
Mr Bham op 23/09/2013 14:33:08:
Bedankt voor de reacties wist niet dat je in de for loop gebruik mocht maken van $i-=2. Weer wat geleerd.
O, en er mag nog veel meer.
Een for is in feite een veredelde while.
for(begin_statement; conditie; tussen_statement)
Alles wat je in een while kan steken, kan je ook in een for steken.
Het is absoluut niet nodig dat er een $i of $i++ aan te pas komt.
begin_statement, conditie en tussen_statement hoeven zelfs niet eens iets met mekaar te maken hebben.
Een voorbeeld:
Code (php)
1
2
3
4
2
3
4
<?php
$sql = "SELECT id, user FROM users ORDER BY user";
for ($res = mysql_query($sql); $row=mysql_fetch_assoc($res); echo '<a href="profiel.php?id=' . $row['id'] . '">' . $row['user'] . '</a><br>');
?>
$sql = "SELECT id, user FROM users ORDER BY user";
for ($res = mysql_query($sql); $row=mysql_fetch_assoc($res); echo '<a href="profiel.php?id=' . $row['id'] . '">' . $row['user'] . '</a><br>');
?>
Je hoort me niet zeggen dat dit de ideale manier is om records te halen, ik wil gewoon tonen hoe je veel meer kan doen met een for()
Gewijzigd op 23/09/2013 15:00:56 door Kris Peeters