Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] przekształcanie elseif w switch/case
Radek41
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 28.11.2009

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


Witam,
zrobiłem taki banalny skrypt, który porównuje liczbę 600, zapisaną w zmiennej $aktualna ze wprowadzoną wartością $pkt i następnie pokazuje jak $aktualna się zmieniła.

Wygląda to tak

  1. <?
  2. $aktualna = 600;
  3. $pkt = $_POST['pkt'];
  4. $zmiana = $pkt - $aktualna;
  5. $suma = $aktualna + $zmiana;
  6.  
  7. if ($pkt == "") echo '';
  8. elseif ($pkt > $aktualna) echo 'Punktow '.$suma.' (<b><span style="color: green;">+'.$zmiana.'</span></b>).';
  9. elseif ($pkt < $aktualna) echo 'Punktow '.$suma.' (<b><span style="color: red;">'.$zmiana.'</span></b>).';
  10.  
  11. ?>


I wszystko dla mnie jest OK, osiągnąłem oczekiwany przeze mnie efekt.

Ale nurtuje mnie czy można to samo zapisać wykorzystując instrukcję warunkową switch/case.

Wykombinowałem coś takiego, co działa źle.

  1. <?
  2. $aktualna = 600;
  3. $pkt = $_POST['pkt'];
  4. $zmiana = $pkt - $aktualna;
  5. $suma = $aktualna + $zmiana;
  6.  
  7. switch ($pkt) {
  8. case $pkt == "":
  9. echo '';
  10. case $pkt > $aktualna:
  11. echo 'Punktow '.$suma.' (<b><span style="color: green;">+'.$zmiana.'</span></b>).';
  12. case $pkt < $aktualna:
  13. echo 'Punktow '.$suma.' (<b><span style="color: red;">'.$zmiana.'</span></b>).';
  14. }
  15. ?>



I teraz moje pytanie - czy powyższą instrukcję zapisaną za pomocą elseif można w jakiś sposób zapisać wykorzystując switch/case? A jeśli tak, to w jaki sposób poprawić to co napisałem wyżej?

Dziękuję z góry,
Pozdrawiam

Ten post edytował Radek41 30.01.2010, 18:23:27
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Blame
post
Post #2





Grupa: Zarejestrowani
Postów: 678
Pomógł: 124
Dołączył: 26.09.2009

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


Bo sprawdzanie w case musisz umieścić w nawiasach, tzn.
  1. case ($pkt > $aktualna):
Go to the top of the page
+Quote Post
Radek41
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 28.11.2009

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


Cytat(Blame @ 30.01.2010, 18:58:05 ) *
Bo sprawdzanie w case musisz umieścić w nawiasach, tzn.
  1. case ($pkt > $aktualna):


Mimo wszystko, podczas gdy używając if i nic nie wprowadzając do formularza ($pkt), nic się nie wyświetla

- zgodnie z
  1. if ($pkt == "") echo '';


to używając switch/case, pokazuje się "Punktow 0 (+-600).Punktow 0 (-600)." naraz, czyli omija nie tylko:

  1. case ($pkt == ""):


Ale także źle interpretuje pozostałe warunki.

Ten post edytował Radek41 30.01.2010, 19:32:40
Go to the top of the page
+Quote Post

Posty w temacie


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: 9.10.2025 - 19:23