Dyskusja:PHP:Instrukcja if

Najnowszy komentarz napisał(a) 17 lat temu Zyx

Skoro 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)Odpowiedz

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)Odpowiedz

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

Powrót do strony „PHP:Instrukcja if”.