Autor Zpráva
kovs
Profil
Zdarec. Mám celkem "jednoduchý" problém, který nevím, jak vyřešit.
Mám kalendář, který vypadá takto:
<?
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...
Jde nějak udělat to, aby se mi vypsala všechna jména pod sebe? třeba takto:
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
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
Použít pole
<?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
Keeehi:
Proč dvojrozměrné pole? Pokud nespecifikoval požadavky, tak stačí například
$jmena = array(
  "01-01" => "Nový rok",
  "01-02" => "Karina",
  // atd.
);
foreach($jmena as $datum => $jmeno){
  echo $datum.' '.$jmeno.'<br>';
}
Keeehi
Profil
petr 6:
Proč dvojrozměrné pole?
Protože je to nejlogičtější, nejčistší a nejelegantnější řešení.
Tomáš123
Profil
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
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)
anonymníí
Profil *
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0