- Ariën -
19-02-2021 05:26
gewijzigd op 19-02-2021 05:26
Je kan ook de
flexbox gebruiken, zodat je de logica van het verdelen niet in PHP hoeft te benutten.
Link gekopieerd
?
Onbekende gebruiker
19-02-2021 22:35
gewijzigd op 19-02-2021 22:35
Maar PHP is wel zo leuk, toch?
<?php
$categorie = ['Boeken', 'Films', 'Muziek', 'Kantoor', 'Meubels', 'Spellen'];
$einde = count($categorie) - 1; // voor oneven kolommen
foreach ($categorie as $kolom => $naam) {
if ($kolom % 2 == 0) {print '<div class="column-' . ((int) $kolom / 2 + 1) . '">' . PHP_EOL;}
print ' <span>' . $naam . '</span>' . PHP_EOL;
if ($kolom % 2 == 1 || $kolom == $einde) {print '</div>' . PHP_EOL;}
}
?>
Link gekopieerd
@ad,
Thanks voor het meedenken. Jouw code heb ik geprobeerd maar dan word in kolom 1 de items 1 en 2 gezet en in kolom 2 de items 3 en 4 en in kolom 3 5 en 6.
Hieronder een schema wat ik zou willen
In kolom 1 zouden de items 1, 4, 7 etc moeten komen
In kolom 2 de items 2, 5, 8 etc
En kn kolom 3, 6, 9 etc
Link gekopieerd
- Ariën -
20-02-2021 00:47
gewijzigd op 20-02-2021 00:48
Met de Flexbox kan dit eenvoudig met
flex-direction:row;
Maar column als waarde kan ook.
Link gekopieerd
?
Onbekende gebruiker
20-02-2021 22:19
gewijzigd op 20-02-2021 22:23
O, zo:
<?php
$kolommen = 3;
$items = [];
for ($i = 1; $i < 10; $i++) {$items[] = 'Item ' . $i;}
$aantal = count($items);
for ($kolom = 0; $kolom < $kolommen; $kolom++) {
print '<div class="column-' . ($kolom + 1) . '">' . PHP_EOL;
for ($i = $kolom; $i < $aantal; $i += $kolommen) {
print ' <span>' . $items[$i] . '</span>' . PHP_EOL;
}
print '</div>' . PHP_EOL;
}
?>
Nu is het aantal kolommen dynamisch via $kolommen.
Link gekopieerd