Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Dlaczego w linijce 6 jest bład, Proszę o pomoc prz naprawnieniu go ...
efect1
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 19.06.2008

Ostrzeżenie: (0%)
-----


Witam
uczę się php z książki wykonywałm kolejne zadanie czy dany rok jest przestępny
oto skrypt ponoć w 7 linijce jest błąd jak go poprawić
proszę o pomoc
  1. <?php
  2. $answer = is_leapyear(2000);
  3.  
  4. if($answer) {
  5. echo &#092;"rok 200 jest rokiem przestępnym
  6. &#092;";
  7. } else {
  8. echo &#092;"rok 2000 nie jest rokiem przestępnym
  9. &#092;";
  10. }
  11. /*Zastosowanie domyślnej wartości parametru */
  12. $answer = is_leapyear() ;
  13. if ($answer) {
  14. echo &#092;"rok 2004 jest rokiem przestępnym
  15. &#092;";
  16. } else {
  17. echo &#092;"rok 2004 nie jest rokiem przestępnym
  18. &#092;";
  19. }
  20. ?>


Ten post edytował Piniek 23.07.2008, 22:13:52
Powód edycji: poprawiłem bbcode // Dodałem tag
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
neverever
post
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $answer = is_leapyear(2000);
  3.  
  4. if($answer) echo "rok 200 jest rokiem przestępnym"; 
  5. else echo "rok 2000 nie jest rokiem przestępnym";
  6.  
  7.  /*Zastosowanie domyślnej wartości parametru */
  8. $answer = is_leapyear() ;
  9. if ($answer) echo "rok 2004 jest rokiem przestępnym";
  10. else
  11. echo "rok 2004 nie jest rokiem przestępnym";
  12.  
  13. ?>
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


~neverever jak już komuś poprawiasz to poprawiaj tak jak zwyczaje i standardy nakazują:
  1. <?php
  2.  
  3. $answer = is_leapyear(2000);
  4.  
  5. if ($answer) {
  6. echo "rok 200 jest rokiem przestępnym";
  7. } else {
  8. echo "rok 2000 nie jest rokiem przestępnym";
  9. }
  10.  
  11.  /*Zastosowanie domyślnej wartości parametru */
  12. $answer = is_leapyear() ;
  13.  
  14. if ($answer) {
  15. echo "rok 2004 jest rokiem przestępnym";
  16. } else {
  17. echo "rok 2004 nie jest rokiem przestępnym";
  18. }
  19.  
  20. ?>
Go to the top of the page
+Quote Post
efect1
post
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 19.06.2008

Ostrzeżenie: (0%)
-----


chyba źle :0
Chyba chodzi o to ,że tej funkcji nie mam ( dobrze rozumuje ?)

jak uruchamiam to na serwerze to wyskakuje
Fatal error: Call to undefined function is_leapyear() in /var/www/test/1.20.php on line 6

Ten post edytował efect1 23.07.2008, 21:51:26
Go to the top of the page
+Quote Post
Xniver
post
Post #5





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

Ostrzeżenie: (0%)
-----


Tak, chodzi o to ,że taka funkcja nie istnieje
Go to the top of the page
+Quote Post
neverever
post
Post #6





Grupa: Zarejestrowani
Postów: 278
Pomógł: 44
Dołączył: 17.02.2004
Skąd: Wieliczka

Ostrzeżenie: (10%)
X----


Cytat(mike @ 23.07.2008, 22:46:00 ) *
~neverever jak już komuś poprawiasz to poprawiaj tak jak zwyczaje i standardy nakazują

Zawsze myślałem że nawias jest konieczny TYLKO w przypadku gdy w warunku albo pętli występuje więcej niż jedno polecenie.
Jeżeli standardem jest wciskanie nawiasów wszędzie tam gdzie są one zwyczajnie zbędne to sory, nie wiedziałem o tym.
Będe zobowiązany za link do manuala albo innej strony na której jest opisany ten przypadek.
Go to the top of the page
+Quote Post
-gox-
post
Post #7





Goście







  1. <?php
  2. if ( function_exists('is_leapyear') ) {
  3. $answer = is_leapyear(2000);
  4. if ($answer == true)
  5. echo 'rok 2000 jest rokiem przestępnym';
  6. else
  7. echo 'rok 2000 nie jest rokiem przestępnym';
  8.  
  9.  /*Zastosowanie domyślnej wartości parametru */
  10. $answer = is_leapyear();
  11. if ($answer == true)
  12. echo 'rok 2004 jest rokiem przestępnym';
  13. else
  14. echo 'rok 2004 nie jest rokiem przestępnym';
  15. }
  16. else
  17. echo 'Funkcja is_leapyear() nie istnieje.';
  18.  
  19. # teraz nie bedzie bledu :)
  20. ?>


Niech modek skasuje pow. przyklad (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) bardzo prosze.
Go to the top of the page
+Quote Post
efect1
post
Post #8





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 19.06.2008

Ostrzeżenie: (0%)
-----


dziękuję bardzo
możecie tylko opisać co wstawiliście i do czego służy ?
bo ja świeżak jestem jeśli o php chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
P.S
tylko wyskakuje
Funkcja is_leapyear() nie istnieje.
a nie wynik (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował efect1 23.07.2008, 22:24:16
Go to the top of the page
+Quote Post
Shili
post
Post #9





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Jeśli jej nie napisałeś, to nic dziwnego że nie istnieje. Jeśli uważasz, że ją napisałeś, to sprawdź, czy w nazwie nie ma literówki.
Go to the top of the page
+Quote Post
efect1
post
Post #10





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 19.06.2008

Ostrzeżenie: (0%)
-----


a możesz mi pokazac jak to powiino byc dobrze napisane aby wszystko działało

Ten post edytował efect1 23.07.2008, 22:42:53
Go to the top of the page
+Quote Post
Shili
post
Post #11





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Jasne, musisz gdzieś (przed wywołaniem funkcji) napisać:

  1. <?php
  2. function is_leapyear($year = 2004)
  3. {
  4.  // tutaj umieszczasz warunek sprawdzający czy rok jest przestępny czy nie
  5.  // funkcja wywołana bez argumentów sprawdzi przestępność w roku 2004
  6. }
  7. ?>
Go to the top of the page
+Quote Post
-gox-
post
Post #12





Goście







  1. <?php
  2. function is_leapyear($rok=NULL) {
  3. # true => zwykly
  4. # false => przestepny
  5. if ($rok >= 4) {
  6. if (is_float($rok / 4))
  7. return true;
  8. if (is_int($rok / 100)) {
  9. if (is_int($rok / 400))
  10. return false;
  11. return true;
  12. }
  13. }
  14. trigger_error('Krytyczny i w dodatku fatalny blad funkcji is_leapyear() <a href=\"http://php.pl\" target=\"_blank\">http://php.pl</a> (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ', E_USER_ERROR
  15. }
  16. ?>

Mam nadzieje ze nie zrypalem tych warunkow, pozno jest (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Shili
post
Post #13





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


@up
Co prawda chciałam, żeby autor sam zrobił tą funkcję, ale w sumie albo ja coś mieszam z latami przestępnymi, albo wystarczy:
  1. <?php
  2. function is_leapyear($year = 2004)
  3. {
  4. if(is_int($year) && $year % 4 === 0)
  5. return true;
  6. return false;
  7.  
  8. }
  9. ?>

Tyle że u mnie false jest w momencie nieprzestępnego roku, a true przestępnego.

Ten post edytował Shili 23.07.2008, 22:52:18
Go to the top of the page
+Quote Post
-gox-
post
Post #14





Goście







2up

Rok jest zwykły jeśli nie dzieli się przez 4,
Rok jest przestępny jeśli dzieli się przez 4, chyba że ...
- ... dzieli się przez 100 - zwykły, chyba że
- ... dzieli się przez 400, jest wtedy przestępny.

wiec twoja funkcja jest nieco... sredniowieczna...
Go to the top of the page
+Quote Post
Shili
post
Post #15





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

Ostrzeżenie: (0%)
-----


Faktycznie o tym nie pomyślałam, zapewne ze względu na późną porę, zwracam honor (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Imo jednak sprawdzanie modulo jest lepsze niż sprawdzanie czy liczba po podziale jest floatem czy intem.
Go to the top of the page
+Quote Post
mike
post
Post #16





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(neverever @ 23.07.2008, 22:53:39 ) *
Zawsze myślałem że nawias jest konieczny TYLKO w przypadku gdy w warunku albo pętli występuje więcej niż jedno polecenie.
Jeżeli standardem jest wciskanie nawiasów wszędzie tam gdzie są one zwyczajnie zbędne to sory, nie wiedziałem o tym.
Będe zobowiązany za link do manuala albo innej strony na której jest opisany ten przypadek.
Nie napisałem, że te nawiasy są konieczne, napisałem, że są standardem dobrego kodowania. Takie standardy nie są ujęte w dokumentacji.
Ale proszę bardzo:
Cytat
Braces are used around all statements, even single statements, when they are part of a control structure
Code Conventions for the Java Programming Language
Identyczne wytyczne dobrych zwyczajów tyczą się wszystkich języków gdzie nawiasy klamrowe (curly braces lub brackets) służą do wydzielania bloków kodu i są ujęte we wszystkich konwencjach.
Zresztą przejrzyj sobie dowolne źródła jakiegoś otwartego projektu (ZendFramework, Symfony, ...) w większości zwyczaj ten jest stosowany, pomimo tego, że składania języka tego nie wymaga.

Oo, znalazłem kolejne:
Cytat
Braces should always be included when writing code using if, for, while etc. blocks. There are no exceptions to this rule, even if the braces could be omitted. Leaving out braces makes code harder to maintain in the future and can also cause bugs that are very difficult to track down.
PHP coding guidelines :: Code layout :: Including braces
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 15.09.2025 - 16:25