![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 27.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam, po przeczytaniu pewnego rozdziału w książce postanowiłem napisać swój pierwszy skrypcik. Mam jednak mały problem, Kiedy zmieniałem nazwe dnia tygodnia z angielskiego na polski za pomocą date("l"), jako dzień dzisiejszy (niedziela) pokazywało poniedziałek. Chyba chodzi o to, że ta funkcja (l) interpretuje niedzielę jako 0 a sobotę jako 6 dzień tygodnia, lecz nie jestem pewien. Oto skrypty:
Cytat <?php $nazwa_dnia = date("l"); $dzien = date("d"); $miesiac = date("m"); $rok = date("Y"); echo "Dzisiaj jest "; if ($nazwa_dnia = "Monday") { echo "Poniedziałek"; } elseif ($nazwa_dnia = "Tuesday") { echo "Wtorek"; } elseif ($nazwa_dnia = "Wednesday") { echo "Środa"; } elseif ($nazwa_dnia = "Thursday") { echo "Czwartek"; } elseif ($nazwa_dnia = "Friday") { echo "Piątek"; } elseif ($nazwa_dnia = "Saturday") { echo "Sobota"; } elseif ($nazwa_dnia = "Sunday") { echo "Niedziela"; } echo ", ".$dzien." "; if ($miesiac == "01") { echo "Stycznia "; } elseif ($miesiac == "02") { echo "Lutego"; } elseif ($miesiac == "03") { echo "Marca"; } elseif ($miesiac == "04") { echo "Kwietnia"; } elseif ($miesiac == "05") { echo "Maja"; } elseif ($miesiac == "06") { echo "Czerwca"; } elseif ($miesiac == "07") { echo "Lipca"; } elseif ($miesiac == "08") { echo "Sierpnia"; } elseif ($miesiac == "09") { echo "Września"; } elseif ($miesiac == "10") { echo "Października"; } elseif ($miesiac == "11") { echo "Listopada"; } elseif ($miesiac == "12") { echo "Grudnia"; } echo ", ".$rok; ?> To jest poprzedni kod z niezadawalającym efektem. Cytat <?php $nazwa_dnia = date("l"); $dzien = date("d"); $miesiac = date("m"); $rok = date("Y"); echo "Dzisiaj jest "; if ($nazwa_dnia = "Sunday") { echo "Niedziela"; } elseif ($nazwa_dnia = "Monday") { echo "Poniedziałek"; } elseif ($nazwa_dnia = "Tuesday") { echo "Wtorek"; } elseif ($nazwa_dnia = "Wednesday") { echo "Środa"; } elseif ($nazwa_dnia = "Thursday") { echo "Czwartek"; } elseif ($nazwa_dnia = "Friday") { echo "Piątek"; } elseif ($nazwa_dnia = "Saturday") { echo "Sobota"; } echo ", ".$dzien." "; if ($miesiac == "01") { echo "Stycznia "; } elseif ($miesiac == "02") { echo "Lutego"; } elseif ($miesiac == "03") { echo "Marca"; } elseif ($miesiac == "04") { echo "Kwietnia"; } elseif ($miesiac == "05") { echo "Maja"; } elseif ($miesiac == "06") { echo "Czerwca"; } elseif ($miesiac == "07") { echo "Lipca"; } elseif ($miesiac == "08") { echo "Sierpnia"; } elseif ($miesiac == "09") { echo "Września"; } elseif ($miesiac == "10") { echo "Października"; } elseif ($miesiac == "11") { echo "Listopada"; } elseif ($miesiac == "12") { echo "Grudnia"; } echo ", ".$rok; ?> po tym jest zadawalający efekt. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 287 Pomógł: 10 Dołączył: 22.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Ten post edytował Matimor 20.09.2009, 20:40:24 -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 27.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki, ale nie chodziło mi o użycie js. Chcę tylko otrzymać odpowiedź na moje pytanie.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze: umieszczaj kod PHP w tagach php nie code, jest czytelniejszy
![]() Po drugie: przeanalizuj jeszcze raz swój kod i zobacz, co tak na prawdę wykonujesz w instrukcji if:
Za każdym razem zamiast porównywać nazwę dnia z danym łańcuchem PRZYPISUJESZ do niej ten łańcuch (używasz operatora = zamiast ==). Dlaczego więc dzisiejszy dzień pojawia się jako "Poniedziałek"? Spójrz na pierwszy warunek:
W wyrażeniu następuje przypisanie ciągu "Monday" do zmiennej $nazwa_dnia. Operator przypisania (=) działa w ten sposób, że po przypisaniu wartości do zmiennej zwraca tą wartość. W tym przypadku wartość "Monday" jest różna od zera (jej wartość logiczna jest więc równa true), podany warunek jest spełniony i wykonywana jest instrukcja echo "Poniedziałek"; W tym przypadku więc bez względu na to jaki jest dzień wykonywany jest pierwszy warunek ![]() W drugim kodzie, który podałeś pokazywało dobry dzień zupełnie przypadkowo, bo akurat tam zamieniłeś kolejność (niedziela była na początku). Co ciekawe nazwy miesięcy porównujesz dobrze, więc nie wiem czemu przy dniach zapomniałeś ![]() Już tak przy okazji powiem, że do takich celów jak ten została specjalnie stworzona instrukcja switch, ale rozumiem, że do tego jeszcze mogłeś nie dojść w kursie ![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
Przykład lepszego użycia niż ify
Ten post edytował Wicepsik 20.09.2009, 21:02:07 -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 27.08.2009 Ostrzeżenie: (0%) ![]() ![]() |
Void - Czytałem odnośnie switch, ale myślałem, że ifami będzie prościej. Chyba się myliłem. Dzięki za obszerną odpowiedź.
![]() A która funkcja jest bardziej poprawna do tego typu elementów, switch czy array? |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 112 Pomógł: 15 Dołączył: 2.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
W tym przypadku bardziej zwięzłe (i przez to bardziej wydajne) jest chyba użycie tablic, ale obie są poprawne (tak samo poprawne, choć mało wygodne, jest użycie elseif).
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
A która funkcja jest bardziej poprawna do tego typu elementów, switch czy array? Sam pomyśl i zobacz który kod jest czytelniejszy, łatwiejszy w edycji ? Tablice to najlepsze rozwiązanie. -------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 08:25 |