Modulus
1 bericht
• Pagina 1 van 1
Modulus
Inleiding
Modulus is een wiskundige functie die ook in de meeste programmeertalen terugkomt. Daarbij ook in PHP. Dit artikel legt je uit hoe modulus werkt en hoe je het kan gebruiken.
Modulus
Bron: Wikipedia.
Bijvoorbeeld:
Praktisch gebruik
Nu vraag je jezelf wellicht af wat jij hier aan hebt. De modulo is erg handig wanneer je gegevens in kolommen weer wilt geven. In het volgende voorbeeld willen we na elke 3 afbeeldingen een enter.
PHP
Het commentaar in de code legt uit wat het precies doet. De code zal het volgende resultaat hebben. Een rondje stelt een afbeelding voor.
Modulo en tabellen
Wanneer we verschillende gegevens van diverse maten hebben (korte teksten/lange teksten, grote afbeeldingen/kleine afbeeldingen) dan willen we deze natuurlijk netjes uitlijnen. Dus echte kolommen creeëren. Tabellen zijn hierbij de oplossing. Hierbij gaat het gebruik van de modulo een niveau hoger.
Wederom werk ik met een voorbeeld, om het uit te leggen. Het commentaar in de code licht toe wat bepaalde delen doen.
PHP
Wanneer we naar de broncode van het resultaat kijken zien we het volgende:
HTML
Zoals je ziet klopt het niet helemaal. We missen namelijk twee tabelcellen in de laatste tabelrij. Om dit op te lossen voegen we code toe die deze opvult. Het totale script wordt dan:
PHP
Wat is er nu anders? Na dewhile() {} zie je nu een if() {} . Wanneer $i modulus 3 geen nul is betekent dat de rij nog niet is afgesloten en er dus cellen missen. Met de functie str_repeat() herhalen we een lege cel. Het aantal keer wordt berekent aan de hand van de som 3 - ( $i % 3 ) .
De uiteindelijke code resulteert in:
HTML
Zoals je ziet worden nu de twee laatste tabelcellen wel weergeven, met een spatie erin.
Tabelrijen kleuren
Met tabellen kun je eenvoudig grote hoeveelheden data weergeven. Wanneer de gegevens veel op elkaar lijken wordt het soms wazig voor je ogen zodra je het doorleest. Om dit te voorkomen kun je de rijen om en om verschillende kleuren geven. Hierdoor blijft het beeld wat rustiger en overzichtelijker. Ook hiervoor kunnen we modulus gebruiken. Wederom een voorbeeld:
PHP
Het HTML resultaat hiervan is:
HTML
Modulus is een wiskundige functie die ook in de meeste programmeertalen terugkomt. Daarbij ook in PHP. Dit artikel legt je uit hoe modulus werkt en hoe je het kan gebruiken.
Modulus
Bron: Wikipedia.
De modulus (ook wel modulo genoemd) is een vast getal (bijvoorbeeld 7). Van een bepaald getal trek je zo vaak mogelijk de modulus af. Het getal dat je overhoud is de rest. Bij modulus 7 zijn de getallen die als rest kunnen overblijven de getallen 0, 1, 2, 3, 4, 5, 6. Het getal 7 zelf natuurlijk niet, want dan is de rest gewoon 0.
Bijvoorbeeld:
23 % 7
3 x 7 = 21, rest is 2
48 % 7
6 x 7 = 42, rest is 6
Praktisch gebruik
Nu vraag je jezelf wellicht af wat jij hier aan hebt. De modulo is erg handig wanneer je gegevens in kolommen weer wilt geven. In het volgende voorbeeld willen we na elke 3 afbeeldingen een enter.
PHP
- Code: Alles selecteren
<?php
// Afbeeldingen array
$afbeeldingen = array(
"afb1.jpg",
"afb2.jpg",
"afb3.jpg",
"afb4.jpg",
"afb5.jpg",
"afb6.jpg",
"afb7.jpg",
"afb8.jpg",
"afb9.jpg",
"afb10.jpg" );
// Tabel beginnen
echo "<table border=\"1\">\n";
echo "\t<tr>\n";
// De teller initialiseren
$i = 0;
// Door de afbeeldingen loopen
foreach( $afbeeldingen as $afbeelding )
{
// Indien $i modulo 3 gelijk is aan nul de tabelrij eindigen en een nieuwe beginnen
// Dit geldt enkel wanneer $i groter is dan nul
if( ( $i % 3 ) == 0 and ( $i != 0 ) )
{
echo "\t</tr>\n";
echo "\t<tr>\n";
}
// Afbeelding weergeven in een tabelcel
echo "\t\t<td>" . $afbeelding . "</td>\n";
// Teller met één verhogen
$i++;
}
?>
Het commentaar in de code legt uit wat het precies doet. De code zal het volgende resultaat hebben. Een rondje stelt een afbeelding voor.
0 0 0
0 0 0
0 0 0
0
Modulo en tabellen
Wanneer we verschillende gegevens van diverse maten hebben (korte teksten/lange teksten, grote afbeeldingen/kleine afbeeldingen) dan willen we deze natuurlijk netjes uitlijnen. Dus echte kolommen creeëren. Tabellen zijn hierbij de oplossing. Hierbij gaat het gebruik van de modulo een niveau hoger.
Wederom werk ik met een voorbeeld, om het uit te leggen. Het commentaar in de code licht toe wat bepaalde delen doen.
PHP
- Code: Alles selecteren
<?php
// Afbeeldingen array
$afbeeldingen = array(
"afb1.jpg",
"afb2.jpg",
"afb3.jpg",
"afb4.jpg",
"afb5.jpg",
"afb6.jpg",
"afb7.jpg",
"afb8.jpg",
"afb9.jpg",
"afb10.jpg" );
// Tabel beginnen
echo "<table border=\"1\">\n";
echo "\t<tr>\n";
// De teller initialiseren
$i = 1;
// Door de afbeeldingen loopen
foreach( $afbeeldingen as $afbeelding )
{
// Afbeelding weergeven in een tabelcel
echo "\t\t<td>" . $afbeelding . "</td>\n";
// Indien $i modulo 3 gelijk is aan nul de tabelrij eindigen en een nieuwe beginnen
if( ( $i % 3 ) == 0 )
{
echo "\t</tr>\n";
echo "\t<tr>\n";
}
// De teller met één verhogen
$i++;
}
// Tabel afmaken
echo "\t</tr>\n";
echo "</table>";
?>
Wanneer we naar de broncode van het resultaat kijken zien we het volgende:
HTML
- Code: Alles selecteren
<table border="1">
<tr>
<td>afb1.jpg</td>
<td>afb2.jpg</td>
<td>afb3.jpg</td>
</tr>
<tr>
<td>afb4.jpg</td>
<td>afb5.jpg</td>
<td>afb6.jpg</td>
</tr>
<tr>
<td>afb7.jpg</td>
<td>afb8.jpg</td>
<td>afb9.jpg</td>
</tr>
<tr>
<td>afb10.jpg</td>
</tr>
</table>
Zoals je ziet klopt het niet helemaal. We missen namelijk twee tabelcellen in de laatste tabelrij. Om dit op te lossen voegen we code toe die deze opvult. Het totale script wordt dan:
PHP
- Code: Alles selecteren
<?php
// Afbeeldingen array
$afbeeldingen = array(
"afb1.jpg",
"afb2.jpg",
"afb3.jpg",
"afb4.jpg",
"afb5.jpg",
"afb6.jpg",
"afb7.jpg",
"afb8.jpg",
"afb9.jpg",
"afb10.jpg" );
// Tabel beginnen
echo "<table border=\"1\">\n";
echo "\t<tr>\n";
// De teller initialiseren
$i = 0;
// Door de afbeeldingen loopen
foreach( $afbeeldingen as $afbeelding )
{
// Indien $i modulo 3 gelijk is aan nul de tabelrij eindigen en een nieuwe beginnen
// Dit geldt enkel wanneer $i groter is dan nul
if( ( $i % 3 ) == 0 and ( $i != 0 ) )
{
echo "\t</tr>\n";
echo "\t<tr>\n";
}
// Afbeelding weergeven in een tabelcel
echo "\t\t<td>" . $afbeelding . "</td>\n";
// Teller met één verhogen
$i++;
}
// Lege cellen opvullen:
if ( ( $i % 3 ) != 0 )
{
// Herhaaldelijk tabelcellen toevoegen.
echo str_repeat( "\t\t<td> </td>\n", ( 3 - ( $i % 3 ) ) );
}
// Tabel afmaken
echo "\t</tr>\n";
echo "</table>";
?>
Wat is er nu anders? Na de
De uiteindelijke code resulteert in:
HTML
- Code: Alles selecteren
<table border="1">
<tr>
<td>afb1.jpg</td>
<td>afb2.jpg</td>
<td>afb3.jpg</td>
</tr>
<tr>
<td>afb4.jpg</td>
<td>afb5.jpg</td>
<td>afb6.jpg</td>
</tr>
<tr>
<td>afb7.jpg</td>
<td>afb8.jpg</td>
<td>afb9.jpg</td>
</tr>
<tr>
<td>afb10.jpg</td>
<td> </td>
<td> </td>
</tr>
</table>
Zoals je ziet worden nu de twee laatste tabelcellen wel weergeven, met een spatie erin.
Tabelrijen kleuren
Met tabellen kun je eenvoudig grote hoeveelheden data weergeven. Wanneer de gegevens veel op elkaar lijken wordt het soms wazig voor je ogen zodra je het doorleest. Om dit te voorkomen kun je de rijen om en om verschillende kleuren geven. Hierdoor blijft het beeld wat rustiger en overzichtelijker. Ook hiervoor kunnen we modulus gebruiken. Wederom een voorbeeld:
PHP
- Code: Alles selecteren
<?php
$kleur1 = "#eeeeee";
$kleur2 = "#cccccc";
$i = 1;
echo "<table border=\"1\">\n";
for( $x = 0; $x < 6; $x++ )
{
// Kleur bepalen via een verkorte if-else statement
$bg_kleur = ( $i % 2 == 0 ) ? $kleur1 : $kleur2;
// Tabelrij en cel weergeven
echo "\t<tr>\n";
echo "\t\t<td style=\"background-color: " . $bg_kleur . "\">" . $x . "</td>\n";
echo "\t</tr>\n";
// Teller met één verhogen
$i++;
}
echo "</table>";
?>
Het HTML resultaat hiervan is:
HTML
- Code: Alles selecteren
<table border="1">
<tr>
<td style="background-color: #cccccc">0</td>
</tr>
<tr>
<td style="background-color: #eeeeee">1</td>
</tr>
<tr>
<td style="background-color: #cccccc">2</td>
</tr>
<tr>
<td style="background-color: #eeeeee">3</td>
</tr>
<tr>
<td style="background-color: #cccccc">4</td>
</tr>
<tr>
<td style="background-color: #eeeeee">5</td>
</tr>
</table>
- Theo
- Oprichter
- Berichten: 1795
- Geregistreerd: 11 Jun 2005 17:43
- Woonplaats: in_array()
1 bericht
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 1 gast