Autor | Zpráva | ||
---|---|---|---|
kovs Profil |
#1 · Zasláno: 28. 4. 2015, 19:03:58
Zdarec. Mám celkem "jednoduchý" problém, který nevím, jak vyřešit.
Mám kalendář, který vypadá takto: 1<? <?
echo "Svátek má ";
$den=Date("j");
$mesic=(int)Date("m");
if ($mesic==1) {
if ($den==1) echo"Nový rok";
if ($den==2) echo"Karina";
if ($den==3) echo"Radmila";
if ($den==4) echo"Diana";
if ($den==5) echo"Dalimil";
//další dny...
if ($den==30) echo"<b>Robin</b>";
if ($den==31) echo"Marika";
}
if ($mesic==2) {
if ($den==1) echo"Hynek";
//další dny
if ($den==28) echo"Lumír";
if ($den==29) echo".....";
}
//a takto to pokračuje... 1.1. Nový rok 2.1. Karina ... 2.1 Hynek ... Chci tedy udělat to, abych se mohl podívat na stránkách na celý "kalendář svátků". |
||
petr 6 Profil |
#2 · Zasláno: 28. 4. 2015, 19:44:28
Nahradit echo za return a dát to celé do funkce, tu pak zavolat pro všechna data.
Nebo elegantněji, dát jména do pole, kde indexy by byla data, a pak jen projít pole. A mimochodem, vyhodit <b> od jména Robin. |
||
Keeehi Profil |
#3 · Zasláno: 28. 4. 2015, 19:45:03
Použít pole
1<?php <?php
$names = array (
array("Nový rok", "Karina", ..., "Marika"),
array("Hynek", ..., "Lumír"),
...
array(..., "Silvestr")
);
$day=(int)date("j");
$month(int)date("m");
echo "Dnes má svátek ". $names[$month-1][$day-1];
echo "Kalendář";
foreach ($names as $monthIndex => $monthNames) {
foreach ($monthNames as $dayIndex => $ name) {
echo ($dayIndex+1).".".($monthIndex+1).". $name<br>\n";
}
} |
||
petr 6 Profil |
#4 · Zasláno: 28. 4. 2015, 19:49:32
Keeehi:
Proč dvojrozměrné pole? Pokud nespecifikoval požadavky, tak stačí například |
||
Keeehi Profil |
#5 · Zasláno: 28. 4. 2015, 20:07:48
petr 6:
„Proč dvojrozměrné pole?“ Protože je to nejlogičtější, nejčistší a nejelegantnější řešení. |
||
Tomáš123 Profil |
#6 · Zasláno: 28. 4. 2015, 21:45:39
Keeehi:
Prečo, prosím, najprv odčítavaš a potom pripočítavaš 1 ?
Inak, nezabudol si pomenovať vnorené polia podľa názvov mesiacov? Alebo to PHP nejako zvláda samo? |
||
juriad Profil |
Tomáš123:
Indexy v poli začínají nulou. Funkce date vrací čísla dnů a měsíců počínaje jedničkou. => Je třeba odečíst 1. Později iteruje přes indexy pole. A tomu vrací čísla od nuly. Jelikož je chce vypsat jako datum, musí přičíst jedničku. Jednotlivé úlohy jsou striktně oddělené 13. řadkem. Využívají jen stejnou datovou strukturu. „Inak, nezabudol si pomenovať vnorené polia podľa názvov mesiacov? Alebo to PHP nejako zvláda samo?“ Vnější pole = měsíce. Vnitřní = dny v měsíci. Obě pole jsou indexovány čísly, žádné názvy měsíců nikde nejsou. |
||
Tomáš123 Profil |
#8 · Zasláno: 29. 4. 2015, 16:05:31
juriad:
„Vnější pole = měsíce. Vnitřní = dny v měsíci.“ To mi je jasné. Ide skôr o výpis: foreach ($names as $monthIndex => $monthNames) foreach ($names as $monthIndex => $monthNames) |
||
anonymníí Profil * |
#9 · Zasláno: 29. 4. 2015, 16:23:19
Tomáš123:
monthNames ve smyslu "Jména lidí v daném měsíci", ne "Název měsíce". To by ta proměnná navíc byla pojmenována pravděpodobně singulárem.
|
||
Časová prodleva: 10 let
|
Toto vlákno je staré, již dlouho do něj nikdo nepřispíval.
Informace a odkazy zde uváděné už nemusejí být aktuální. Nechcete-li řešit zde uvedenou konkrétní otázku, založte si vlastní vlákno, nepište do tohoto. Vložíte-li sem nyní příspěvek, upoutáte pozornost mnoha lidí a někteří z nich si jen kvůli vám přečtou i všechny předcházející příspěvky. Předpokládáte-li, že váš text skutečně bude hodnotný, stiskněte následující tlačítko:
Běda vám, jestli to bude blábol.
0