Skocz do zawartości

Zdjęcie
- - - - -

funkcja date


9 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
Saimon

    Nowy użytkownik

  • 21 postów
    • Czas spędzony online: 9h 20m 48s
3
Neutralna
  • LocationKatowice

Napisano 20 czerwca 2015 - 20:18

#1

Mam taki kod:

 

    $rokpierwszy = date("l", mktime (0,0,0,5,26,2006));
    $rokdrugi = date("l", mktime (0,0,0,5,26,2007));
    $roktrzeci = date("l", mktime (0,0,0,5,26,2008));
    $rokczwarty = date("l", mktime (0,0,0,5,26,2009));
    $rokpiaty = date("l", mktime (0,0,0,5,26,2010));
    $rokszosty = date("l", mktime (0,0,0,5,26,2011));
    $roksiodmy = date("l", mktime (0,0,0,5,26,2012));
    $rokosmy = date("l", mktime (0,0,0,5,26,2013));
    $rokdziewiaty = date("l", mktime (0,0,0,5,26,2014));
    $rokdziesiaty = date("l", mktime (0,0,0,5,26,2015));

Chcę to skrócić, tylko za bardzo nie wiem jak. Próbowałem czegoś takiego:

 

    for ($j = 2005; $j <= 2015; $j++);
    $rok = date("l", mktime (0,0,0,5,26,$j));

I chyba robie coś źle z pętlą for, bo wtedy pokazuje 2005, czyli date przyjmuje $j jako 2005. Pomożecie? ;)


Użytkownik Saimon edytował ten post 20 czerwca 2015 - 20:34

  • 0

writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 20 czerwca 2015 - 20:27

#2

Jak dla mnie to $j zawsze będzie ostatecznie wynosiło 2015. Widzisz ten średnik na końcu pętli for?


  • 0

logo-green-dark.png


Saimon

    Nowy użytkownik

  • 21 postów
    • Czas spędzony online: 9h 20m 48s
3
Neutralna
  • LocationKatowice

Napisano 20 czerwca 2015 - 20:32

#3

Jak dla mnie to $j zawsze będzie ostatecznie wynosiło 2015. Widzisz ten średnik na końcu pętli for?

Ale jednak wyświetla czwartek, a 26.05.2005 to był czwartek. W tym roku był to wtorek.

 

// jak usunę średnik to jest wtorek

generalnie chodzi mi o to, zeby wyswietlilo 10 kolejnych lat


Użytkownik Saimon edytował ten post 20 czerwca 2015 - 20:36

  • 0

writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 20 czerwca 2015 - 23:17

#4

No tak zawsze będzie $j = 2005.

Znasz ty chociaż podstawową konstrukcję pętli for? Znasz zasadę jej działania? Gdzie masz ciało pętli? Co ta pętla wykonuje?

Jak zostawisz tam średnik to ta pętla się tam skończy i nie wykona żadnych operacji oprócz sprawdzania warunku i dodawania 1 do zmiennej.

for ($j = 2005; $j <= 2015; $j++) {
    echo date("l", mktime (0,0,0,5,26,$j));
}

Jak nie chcesz się pomylić, nawet jeśli pętla wykonuje tylko jedną instrukcję to zastosuj nawiasy klamrowe. To te nawiasy określają początek i koniec ciała pętli.

Poza tym zastosowałeś przypisanie do zmiennej i za każdym razem przejścia pętli ta zmienna będzie nadpisywana. W rezultacie będzie zawierała tylko ostani wynik. Najlepiej od razu w pętli wyświetl to co chcesz.


  • 1

logo-green-dark.png


Saimon

    Nowy użytkownik

  • 21 postów
    • Czas spędzony online: 9h 20m 48s
3
Neutralna
  • LocationKatowice

Napisano 21 czerwca 2015 - 08:14

#5

No tak zawsze będzie $j = 2005.

Znasz ty chociaż podstawową konstrukcję pętli for? Znasz zasadę jej działania? Gdzie masz ciało pętli? Co ta pętla wykonuje?

Jak zostawisz tam średnik to ta pętla się tam skończy i nie wykona żadnych operacji oprócz sprawdzania warunku i dodawania 1 do zmiennej.

for ($j = 2005; $j <= 2015; $j++) {
    echo date("l", mktime (0,0,0,5,26,$j));
}

Jak nie chcesz się pomylić, nawet jeśli pętla wykonuje tylko jedną instrukcję to zastosuj nawiasy klamrowe. To te nawiasy określają początek i koniec ciała pętli.

Poza tym zastosowałeś przypisanie do zmiennej i za każdym razem przejścia pętli ta zmienna będzie nadpisywana. W rezultacie będzie zawierała tylko ostani wynik. Najlepiej od razu w pętli wyświetl to co chcesz.

Ledwo co zacząłem się uczyć php, jest to mój chyba drugi skrypt, o ile można to tak nazwać.

W takim razie jak mam wyświetlić w pętli to co chce. Jak patrze na składnie pętli to tam zawsze musi być zdarzenie inicjujące, warunek i działanie pętli dopóki warunek nie zostanie spełniony.

Czy da się skrócić ten zapis za pomocą for? Chodzi mi o to, żeby date przyjął jako zmienną $j lata 2005-2015, po kolei każdy, a z pętlą for faktycznie przyjmuje ostatnią wartość.


  • 0

writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 21 czerwca 2015 - 09:55

#6
Przecież podałem ci kod, który działa tak jak chcesz.
  • 0

logo-green-dark.png


Zimistrz

    Stary wyjadacz

  • 465 postów
    • Czas spędzony online: 14d 2h 42m 38s
116
Znakomita!

Napisano 21 czerwca 2015 - 22:15

#7

No tak zawsze będzie $j = 2005.
Znasz ty chociaż podstawową konstrukcję pętli for? Znasz zasadę jej działania? Gdzie masz ciało pętli? Co ta pętla wykonuje?

Jego problem to przede wszystkim brak przedstawienia złożoności jego własnego problemu.
A dopiero po niej niezrozumienie funkcji time, ponad czym wystarczyłoby sięgnąć po date().
Tylko nas (może i Ciebie, bo mnie na pewno) nie obchodzi to chce osiągnąć autor, skoro swojego problemu przedstawić nie potrafi.

ps. ja to wytknę, tylko dla dla zasady by autor zrozumiał że nie ma czego szukać ;)
  • 0

Saimon

    Nowy użytkownik

  • 21 postów
    • Czas spędzony online: 9h 20m 48s
3
Neutralna
  • LocationKatowice

Napisano 22 czerwca 2015 - 16:21

#8

Jego problem to przede wszystkim brak przedstawienia złożoności jego własnego problemu.
A dopiero po niej niezrozumienie funkcji time, ponad czym wystarczyłoby sięgnąć po date().
Tylko nas (może i Ciebie, bo mnie na pewno) nie obchodzi to chce osiągnąć autor, skoro swojego problemu przedstawić nie potrafi.

ps. ja to wytknę, tylko dla dla zasady by autor zrozumiał że nie ma czego szukać ;)

Paradoskalnie, właśnie tak błędnie przedstawiłem. Miałem odpisać jeszcze raz z całym moim skryptem, po czym sam znalazłem rozwiązanie. Samo wyświetlenie umiałem zrobić, ale nie o to mi chodziło. Tak czy inaczej jak napisałem wcześniej -  już sobie poradziłem, a następnym razem będę wiedział jak postępować. Dzięki :).


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 23 czerwca 2015 - 17:25

#9

To podziel się swoim rozwiązaniem dla potomnych.


  • 0

webDeveloper


Yeoman

    Stary wyjadacz

  • 358 postów
    • Czas spędzony online: 6d 19h 43m 48s
169
Znakomita!
  • LocationKatowice

Napisano 23 czerwca 2015 - 20:15

#10

a następnym razem będę wiedział jak postępować.

Mam nadzieje ze to znaczy, że nauczysz się PHP i logicznego myslenia :D


  • 0

2ed58r7.png





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych