Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Jak prognozowac ilosc dni w miesiacu
Forum PHP.pl > Forum > Przedszkole
cipojsza
Robie sobie wykres odwiedzin i powstal taki problem. Czy da sie szybko (2-3 linijki) podając numer miesiąca i rok uzyskać całkowitą ilosć dni w tym miesiącu ?
nospor
http://pl.php.net/manual/pl/function.date.php
cipojsza
w celu uzyskania ilości dni w obecnie trwającym miesiącu wystarczy:
  1. <?php
  2. $il_dni_mies=date(t);
  3. ?>

takie coś, dzięki nospor
dr_bonzo
nie
  1. <?php
  2. $il_dni_mies=date(t);
  3. ?>

tylko
  1. <?php
  2. $il_dni_mies=date('t');
  3. ?>

bo to byl blad!
I wlacz sobie wyswietlanie wszystkich bledow.
cipojsza
nie chce sie sprzeczac ale...
  1. <?php
  2. echo date(t);
  3. ?>
wyswietla mi ladnie wartosc 31 (na dzien pisania tego postu).
No chyba, że ten zapis jest niepoprawny ze wzgledu na standardy :-)
nospor
http://pl.php.net/manual/pl/language.types.array.php
Cytat
Co wolno, a czego nie w tablicach?
Dlaczego zapis $foo[bar] jest niepoprawny?

W starych skryptach można spotkać taką składnię:

$foo[bar] = 'coś';
echo $foo[bar];
// itd.


Ten zapis jest niepoprawny, ale działa. Dlaczego zatem jest niepoprawny? Powód jest to, co opisano w rozdziale składnia, że pomiędzy nawiasami kwadratowymi ('[' i ']') musi znajdować się wyrażenie. Oznacza to, że można używać czegoś takiego:

echo $arr[ foo(true) ];


Jest to przykład użycia wartości zwracanej przez funkcję jako indeksu tablicy. php zna też stałe, więc można spotkać zastosowanie E_*.

$opis_błędu[E_ERROR] = "Wystąpił poważny błąd";
$opis_błędu[E_WARNING] = "php wysłało ostrzeżenie";
$opis_błędu[E_NOTICE] = "To jest tylko nieformalna uwaga";


Proszę pamiętać, że E_ERROR jest także ważnym identyfikatorem, tak jak bar w pierwszym przykładzie. Ale ostatni przykład znaczy to samo co:

$opis_błędu[1] = "Wystąpił poważny błąd";
$opis_błędu[2] = "php wysłało ostrzeżenie";
$opis_błędu[8] = "To jest tylko nieformalna uwaga";


ponieważ E_ERROR znaczy to samo co 1, itd.

W takiem razie, jak to możliwe, że $foo[bar] działa? To działa, ponieważ bar, zgodnie z jego zapisem powinien być stałą. Jednakże w tym przypadku nie instnieje stała o nazwie bar. php teraz zakłada, że masz na myśli bar literalnie, czyli jako łańucuch "bar", tylko że zapomniałeś napisać cudzysłowów.
Więc dlaczego tak jest źle?

Kiedyś w przyszłości grupa php może chcieć dodać jeszcze jedną stałą lub słowo kluczowe i wtedy będziesz miał kłopot. Dla przykładu, obecnie już nie można używać słów empty i default, gdyż są to specjalne słowa kluczowe.

Poza tym, jeśli dotąd argumenty nie przekonują cię: ta składnia jest po prostu odrzucona i kiedyś może przestać działać.

Notatka: Po przełączeniu error_reporting na E_ALL, zobaczysz, że php generuje ostrzeżenie, kiedy tylko powyższa składnia zostanie użyta. Tak samo generowane będą ostrzeżenia odnośnie innych odrzuconych "udogodnień". (umieść w swoim skrypcie linię error_reporting(E_ALL)winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.