Det er et spørgsmål om at bryde problemet ned i mindre dele så du selv kan forstå det.
Du vil have en liste af 4 personer - kilden til data er under ordnet - til at stå i et 2 by 2 grid.
Du har så to problemer:
1: hvordan laver man et 2x2 grid. (Se @scootergrisens svar)
2: hvordan får man php til at gøre en handling hver anden gang i et loop?
Vi antager at vores input data er:
- <?php
- $persons = array('BoS','dan','scootergrisen','Ronny');
Så skal vi bruge et loop som på hver andet gennemløb kører en bestemt kode. Den nemmeste måde er at bruge en counter variabel og modulo.
- <?php
- $i = 0; // Counter variabel
-
- while(something) {
- $i++; // Læg 1 til counter var
-
- if ($i % 2 == 0) { echo 'Counter var går op i 2 uden rest!'; }
-
- // do stuff.
- }
Et eksempel på en implementering:
- <?php
- $input = array('BoS', 'dan', 'scootergrisen', 'Ronny');
-
- echo '<table>';
-
- $i = 0;
-
- foreach($input as $person) {
- $i++;
- if ($i % 2 == 1) {
- echo '<tr>';
- }
-
- echo '<td>' . $person . '</td>';
-
- if ($i % 2 == 0) {
- echo '</tr>';
- }
- }
-
- echo '</table>';
Output:
- <table>
- <tr>
- <td>BoS</td>
- <td>dan</td>
- </tr>
- <tr>
- <td>scootergrisen</td>
- <td>Ronny</td>
- </tr>
- </table>
Eksemplet virker iøvrigt med alle lister der er delbare med 2. så den laver et 2 by (length / 2) grid. Det kan nemt laves om til 3x(length/3) eller noget helt tredje.
Indlæg senest redigeret d. 27.10.2012 16:18 af Bruger #17015