Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dlaczego w linijce 6 jest bład
Forum PHP.pl > Forum > Przedszkole
efect1
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. ?>
neverever
  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. ?>
mike
~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. ?>
efect1
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
Xniver
Tak, chodzi o to ,że taka funkcja nie istnieje
neverever
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.
gox
  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 smile.gif bardzo prosze.
efect1
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 smile.gif
P.S
tylko wyskakuje
Funkcja is_leapyear() nie istnieje.
a nie wynik sad.gif
Shili
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.
efect1
a możesz mi pokazac jak to powiino byc dobrze napisane aby wszystko działało
Shili
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. ?>
gox
  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> tongue.gif', E_USER_ERROR
  15. }
  16. ?>

Mam nadzieje ze nie zrypalem tych warunkow, pozno jest smile.gif
Shili
@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.
gox
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...
Shili
Faktycznie o tym nie pomyślałam, zapewne ze względu na późną porę, zwracam honor winksmiley.jpg Imo jednak sprawdzanie modulo jest lepsze niż sprawdzanie czy liczba po podziale jest floatem czy intem.
mike
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
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.