Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Uzupełnienie kluczy tablicy o brakujące daty..
Forum PHP.pl > Forum > Przedszkole
kukix
Witam.

Posiadam tablice np datami ostatnich 14 dni:

  1. $tablica_array['2012-03-05'] = 'xxxx';
  2. $tablica_array['2012-03-06'] = 'xxxx';
  3. $tablica_array['2012-03-07'] = 'xxxx';
  4. $tablica_array['2012-03-09'] = 'xxxx';
  5. $tablica_array['2012-03-10'] = 'xxxx';
  6. $tablica_array['2012-03-13'] = 'xxxx';
  7. $tablica_array['2012-03-14'] = 'xxxx';


Jak teraz uzupełnić klucze tych tablic o brakujące indeksy.. np 2012-03-08, 2012-03-11, 2012-03-12 itd, ale tylko z zakresu podanego przezemnie.. np z ostatnich 14 lub 30 dni..

Kombinowałem na kilka sposobów, ale coś mi nie wychodzi :/ Miałem problem, gdy akurat dni wychodziły na przełomie miesięcy, wtedy problem z liczbą dni w danym miesiącu. :/
Crozin
W pętli lecisz po każdym dniu (od 30 dni wstecz do chwili obecnej) i sprawdzasz czy dana data (klucz) istnieje w tablicy. Jeżeli nie, dodajesz.

Jeżeli potrzebujesz by w tablicy dane były posortowane wg kluczy możesz posortować tablicę wg kluczy korzystając z własnej funkcji porównującej: uksort
kukix
Cytat(Crozin @ 8.06.2012, 02:29:43 ) *
W pętli lecisz po każdym dniu (od 30 dni wstecz do chwili obecnej) i sprawdzasz czy dana data (klucz) istnieje w tablicy. Jeżeli nie, dodajesz.

Jeżeli potrzebujesz by w tablicy dane były posortowane wg kluczy możesz posortować tablicę wg kluczy korzystając z własnej funkcji porównującej: uksort



Tak, tylko, że nie wiem jak taką pętle zbudować.. skąd mam wziąć kolejne dni jakie będą.. czy można do tego użyć funkcji date()? Jeżeli tak to w jaki sposób? :/
amii
Pisane na szybko:

  1. for ($i =1; $i <= dni_mies(3, 2012); $i++ ) {
  2. if (!array_key_exists($data = date("Y-m-d", mktime(0, 0, 0, 0, $i, 0)), $tablica_array)
  3. {
  4. $tablica_array[$data] = 'xxxx'; //xxx to wartosc jako chcesz wstawic
  5. }
  6. }
  7.  
  8. function dni_mies($mies,$rok) {
  9.  
  10. $dni = 31;
  11. while (!checkdate($mies, $dni, $rok)) $dni--;
  12.  
  13.  
  14. return $dni; //zwraca ilosc dni w miesiacu
  15. }
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.