Autor | Zpráva | ||
---|---|---|---|
jdanek Profil |
Poradíte prosím jak zkrátit/zkrášlit tento kód, jde o výpis buněk kalendáře
legenda: $days .. pole s objekty Day $day->day .. cislo dne v mesici $day->wday .. cislo dne v tydnu (1-7 -> po-ne) $day_counter .. celkovy pocet dni mesice (unor .. 28) <?php $column = 1; foreach ($days as $day) { if (1 == $column) { echo "<tr>"; } if (1 == $day->day) { echo str_repeat("<td> </td>", ($day->wday - 1)); $column = ($day->wday); } echo "<td>{$day->day}</td>"; ++$column; // day_counter obsahuje celkovy pocet dni mesice if ($day->day == $day_counter && $day->wday < 7) { echo str_repeat("<td> </td>", (7 - $day->wday)); $column = 8; } if (7 < $column) { echo "</tr>"; $column = 1; } } ?> edit: nechci rady typu if (1 == $column) echo "<tr>"; nebo if (1 == $column){echo "<tr>";} |
||
Tori Profil |
Začátek prvního <tr>, konec posledního a doplnění prázdných buněk z obou stran může být i mimo cyklus. Nutné to není, mně by to možná připadalo maličko přehlednější, ale to je dost subjektivní. Na zjištění, zda zalomit řádek tabulky, je možná zaužívanější použít
if ($counter % 7 === 0) nebo lépe if ($counter % NUM_COLUMNS === 0) (lépe proto, že tam není nějaké "magické číslo", ale smysluplně pojmenovaná konstanta).
Ve FAQ máme rovněž příklad na tabulkový výpis kalendáře (příp. jeho alternativní verzi), pro srovnání. Takhle krátký kousek kódu asi nejde napsat velmi různými způsoby, postup je ve všech třech případech v zásadě stejný. |
||
jdanek Profil |
#3 · Zasláno: 21. 2. 2014, 15:28:46
mrknu na to, díky
|
||
Časová prodleva: 10 let
|
0