Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] array i grupowanie po 3
uncuncunc
post 12.09.2012, 10:27:40
Post #1





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 1.04.2012

Ostrzeżenie: (0%)
-----


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?

Ten post edytował uncuncunc 12.09.2012, 10:28:18
Go to the top of the page
+Quote Post
nospor
post 12.09.2012, 10:32:05
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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ę.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
uncuncunc
post 12.09.2012, 10:38:37
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 1.04.2012

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post
nospor
post 12.09.2012, 10:43:52
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Jeśli dam równe 3...
Dzielenie modulo 3 nigdy nie da w wyniku 3....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
phpion
post 12.09.2012, 10:56:34
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Nie lepiej podzielić tablicę na n-elementowe fragmenty (array_chunk)?
Go to the top of the page
+Quote Post
b4rt3kk
post 12.09.2012, 11:07:37
Post #6





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  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. }


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
nicram85
post 12.09.2012, 11:10:48
Post #7





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 23.08.2012

Ostrzeżenie: (0%)
-----


@b4rt3kk - to nie zadziała przecież; nie grupuje po 3
Go to the top of the page
+Quote Post
uncuncunc
post 12.09.2012, 11:11:55
Post #8





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 1.04.2012

Ostrzeżenie: (0%)
-----


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ść.
Go to the top of the page
+Quote Post
nospor
post 12.09.2012, 11:12:43
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czemu dałeś znowu 0? Przecież na 0 rozpoczynasz... kończyć masz na 2.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
uncuncunc
post 12.09.2012, 11:15:51
Post #10





Grupa: Zarejestrowani
Postów: 102
Pomógł: 0
Dołączył: 1.04.2012

Ostrzeżenie: (0%)
-----


Jak nie rozpoczynam? Grup jest 5, od 0 do 4 jako główny klucz i tak przelatuje przez to for.
Go to the top of the page
+Quote Post
nospor
post 12.09.2012, 11:19:09
Post #11





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Chodziło mi o to:
if($i%3==0 OR $i == $count)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 10:37