Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] array i grupowanie po 3
Forum PHP.pl > Forum > Przedszkole
uncuncunc
Napisałem proste grupowanie wyników z tablicy, po 3

  1. $array = array('styczen', 'luty', 'marzec', 'kwiecien', 'maj', 'czerwiec', 'lipiec', 'sierpien', 'wrzesien', 'pazdziernik', 'listopad', 'grudzien', 'cosinnego');
  2.  
  3. $count = count($array);
  4. echo '<ul>';
  5. for($i = 0; $i < $count; ++$i)
  6. {
  7. if($i%3==0)
  8. {
  9. echo '<li style="border:1px solid green">';
  10. }
  11.  
  12. echo '<div style="color:red;border:1px solid yellow">'.$array[$i].'</div>';
  13.  
  14. }
  15. echo '<ul>';


Jednak jaki warunek dać, aby pokazywały się też znaczniki zamykające LI?
nospor
No pomyśl chwilkę.... wiesz w ogóle co robi $i%3==0? Bo jak nie wiesz to nic dziwnego, że nie wiesz jak zamknąć.... A jak wiesz to pomyśl chwilkę.
uncuncunc
Sprawdza $i czy jest resztą z 3 równe 0... i nie mam pomysłu co z tym dalej zrobić. Jeśli dam równe 3...
nospor
Cytat
Jeśli dam równe 3...
Dzielenie modulo 3 nigdy nie da w wyniku 3....
phpion
Nie lepiej podzielić tablicę na n-elementowe fragmenty (array_chunk)?
b4rt3kk
  1. for($i = 0; $i < $count; ++$i)
  2. {
  3. if($i%3==0)
  4. {
  5. echo '<li style="border:1px solid green">';
  6. }
  7.  
  8. echo '<div style="color:red;border:1px solid yellow">'.$array[$i].'</div>';
  9.  
  10. if($i%3==0 OR $i == $count)
  11. {
  12. echo '</li>';
  13. }
  14.  
  15. }
nicram85
@b4rt3kk - to nie zadziała przecież; nie grupuje po 3
uncuncunc
Dzięki phpion, nie wiedziałem o tej funkcji, skleciłem coś takiego:

  1. $array2 = array_chunk($array, 3);
  2. $count = count(array_chunk($array, 3));
  3. //echo $count;
  4.  
  5. echo '<ul>';
  6. for($i = 0; $i < $count; ++$i)
  7. {
  8.  
  9. echo '<li style="border:1px solid green">';
  10. if(isset($array2[$i][0]))
  11. {
  12. echo '<div style="color:red;border:1px solid yellow">'.$array2[$i][0].'</div>';
  13. }
  14.  
  15. if(isset($array2[$i][1]))
  16. {
  17. echo '<div style="color:red;border:1px solid yellow">'.$array2[$i][1].'</div>';
  18. }
  19.  
  20. if(isset($array2[$i][2]))
  21. {
  22. echo '<div style="color:red;border:1px solid yellow">'.$array2[$i][2].'</div>';
  23. }
  24.  
  25. echo '</li>';
  26. }
  27. echo '<ul>';


Spełnia swoje założenie, jednak czy można zrobić to inaczej? lepiej? Tak pytam na przyszłość.
nospor
Czemu dałeś znowu 0? Przecież na 0 rozpoczynasz... kończyć masz na 2.
uncuncunc
Jak nie rozpoczynam? Grup jest 5, od 0 do 4 jako główny klucz i tak przelatuje przez to for.
nospor
Chodziło mi o to:
if($i%3==0 OR $i == $count)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.