Dyskusja:PHP:Instrukcja if
Dodaj tematSkoro echo i print nie są funkcjami, to funkcjami nie nazywajmy również isset() i empty(), MZ. --Jan Dudek 22:07, 6 sty 2006 (UTC)
Z punktu widzenia programisty isset() i empty() można już pod funkcje podciągać, ponieważ nie posiadają jakiejś alternatywnej składni bez nawiasów, jak echo. Niemniej uwaga jest słuszna i zaznaczę ten fakt w tekście. --Zyx 07:26, 7 sty 2006 (UTC)
W czerwonej ramce "uwaga" na dole strony chyba jest błąd... Mówicie o operatorach "=" i "==" a przecież "=" to instrukcja przypisania.... ? Nie powinno tam być czasem "==" i "===", bo sam już nie wiem... a tak zaawansowany żeby być pewnym to też nie jestem ;) --83.22.139.98 13:20, 2 kwi 2006 (UTC)
- Właśnie o to chodzi. if( $i = 1 ) będzie zawsze prawdziwe, bo wynikiem wyrażenia będzie 1 czyli prawda. --Derbeth talk 13:27, 2 kwi 2006 (UTC)
- =, ==, === - to wszystko operatory, a nie żadne instrukcje przypisania, funkcje porównywania, czy co tam chcesz. Skąd tyś w ogóle wytrzasnął ten termin? :) Operator = zwraca zawsze wartość przypisywanego wyrażenia, stąd da się robić coś takiego: if(($a = funkcja()) == 5) (jednocześnie mamy przypisaną wartość do zmiennej $a i porównaną). --Zyx 20:26, 2 kwi 2006 (UTC)
Chyba warto wspomnieć też o tym, że można pominąć nawiasy klamrowe, jeśli wykonujemy tylko jedną instrukcję, czyż nie? ;) Jan Winnicki 19:31, 26 gru 2006 (CET)
- Wspomnieć faktycznie warto. Nie znalazło się to dotąd, ponieważ sam nigdy z tego nie korzystam i kulturalnie wstawiam nawiasy klamrowe wszędzie :). Głównie chodzi tu o zarządzanie kodem - jak są już nawiasy, łatwiej coś dopisać, np. jakieś "echo", by sprawdzić, czy if się prawidłowo wykonuje, a ponadto zwiększa się jego przejrzystość (nie tylko z mojego punktu widzenia - taki styl programowania stosuję wszędzie i już dostawałem za niego pochwały od osób, którym przyszło pracować gdzieś tam z moim kodem) --Zyx 22:39, 26 gru 2006 (CET)
Moim zdaniem nie warto czytelnika uczyć pisania mało optymalnego kodu. W przykładzie:
<?php // 1 if(!isset($_GET['a'])) { $_GET['a'] = 0; } if(!isset($_GET['b'])) { $_GET['b'] = 0; } if(!isset($_GET['c'])) { $_GET['c'] = 0; } // 2 if($_GET['a'] == 0) { die('Nieprawidłowy parametr A!'); } // 3 $delta = pow($_GET['b'], 2) - 4 * $_GET['a'] * $_GET['c']; // 4 if($delta > 0) { // 5 echo 'Delta dodatnia. Dwa rozwiązania:<ul>'; echo '<li>'.round((-$_GET['b']-sqrt($delta))/(2*$_GET['a']), 5).'</li>'; echo '<li>'.round((-$_GET['b']+sqrt($delta))/(2*$_GET['a']), 5).'</li>'; echo '</ul>'; } else if($delta < 0) { // 6 echo 'Delta ujemna. Brak rozwiązań!'; } else { // 7 echo 'Delta = 0. Jedno rozwiązanie: '.round((-$_GET['b'])/(2*$_GET['a']), 5); } ?>
Ten 'if' nie ma sensu:
if(!isset($_GET['a'])) { $_GET['a'] = 0; }
bo podczas liczenia delty i tak 'a' nie może być 0 zatem może sprawdzać tylko !isset($_GET['a']) a nie ustawiać wtedy a=0 a dopiero potem sprawdzać a==0...
Tylko prośba: By przykład można było uruchomić na stronie. Jestem początkujący i nie rozumiem tego przykładu. Do tego momentu było wszystko zrozumiałe i przejrzyste. Pozdrawiam