Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Operacje na SWITCH
ed3k
post
Post #1





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 30.03.2008

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


Witam!

Mam pytanie odnosnie operacji na switch (o ile takie sa w ogole mozliwe). Caly schemat wyglada nastepujaco

switch ($pytanie){
case 1:
...;
break;
case ...;

case x:
if (pytanie2)
costam;
else $pytanie=404;

break;
case 404:
operacje w wyniku bledow;
break;
}

czy jest mozliwe 'przeskoczenie' z CASE X w momencie, gdy pytanie2 jest nieprawdziwe, tak aby skrypt wykonal operacje przypisane CASE 404?

Jesli nie, to sa jakies techniki, aby nie powielac kodu z CASE 404 w momencie wystapienia bledow przy innych wynikach $pytanie ?

Ten post edytował ed3k 8.07.2008, 18:04:52
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Po pierwsze - dodaj bbcode do listingu
Po drugie - w switchu dajesz tylko to, co powinno być wykonane jako alternatywne operacje. Wszystko inne daj przed lub po wykonaniu switch.

Pozdrawiam.


--------------------
To think for yourself you must question authority and
learn how to put yourself in a state of vulnerable, open-mindedness;
chaotic, confused, vulnerability, to inform yourself.
Think for yourself. Question authority.
Go to the top of the page
+Quote Post
ed3k
post
Post #3





Grupa: Zarejestrowani
Postów: 61
Pomógł: 0
Dołączył: 30.03.2008

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


Nie wiem co to jest to bbcode. Dzieki za pomoc.
Go to the top of the page
+Quote Post
nevt
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


można zrobić coś w stylu:
  1. <?php
  2. case x:
  3. if (pytanie2)
  4. {
  5.  // costam;
  6.  break;
  7. }
  8. case 404:
  9. // operacje w wyniku bledow;
  10. ?>


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@nevt nie mozna bo po case X jest zapewne case Y.

@autor jak nie wiesz co to bbcode to albo pogooglaj albo poczytaj zasady forum na ktorym piszesz


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nevt
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


@nospor
Cytat
@nevt nie mozna bo po case X jest zapewne case Y

heh - skoro znasz kod kolegi to czemu sam mu nie pomożesz smile.gif - słabe pytanie i przykład to i słaba odpowiedź (ale na 100 % działa - wbrew temu co napisałeś). smile.gif
@edek
żeby nie powielać kodu, najlepiej napisz funkcję do obsługi tych błędów i wywołuj ją w swich() tam gdzie trzeba. i po problemie.


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@nevt wiesz, kobieca intuicja mi podpowiada ze skoro jest 1...x,404 to znaczy ze pewnie ten warunek nie występuje tylko w X, bo X to 2,3,4,5...... tongue.gif
No ale jesli sie myle, to autor tematu wisi ci piwo winksmiley.jpg


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
hacek
post
Post #8





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 8.06.2008

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


Cytat(ed3k @ 8.07.2008, 19:03:58 ) *
czy jest możliwe 'przeskoczenie' z CASE X w momencie, gdy pytanie2 jest nieprawdziwe, tak aby skrypt wykonał operacje przypisane CASE 404?

Jeśli nie, to są jakieś techniki, aby nie powielac kodu z CASE 404 w momencie wystąpienia błędów przy innych wynikach $pytanie ?


może wrzucić kod errów do funkcji
  1. <?php
  2. function error()
  3. {
  4.  echo 'Błąd';
  5. }
  6. ?>


PS. Unikaj literówek, używaj FF 2/3
Go to the top of the page
+Quote Post
cbagov
post
Post #9





Grupa: Zarejestrowani
Postów: 181
Pomógł: 18
Dołączył: 19.04.2008

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


Mozesz wkleic - sprawdzilem i zdaje mi sie, ze dziala. Tylko pilnuj warunku i licznika.

Kod
<?PHP

$pytanie  = 304;   // zaczynamy od tego
$pytanie2= false; // jakis IF test rozgaleziajacy
$warunek= false; // zabezpieczenie wyjscia z petli lub spelniony warunek testu

$ctr = 0;  // licznik na wszelki wypadek albo okreslona ilosc testow

while( !$warunek || $ctr==5 ) {
    switch ($pytanie) {
    case 1:
        echo "case 1<BR>";
        break;
    case 304:
       {
       echo "case 304<BR>";    
       if ($pytanie2)
         {
         echo "never here<BR>";
         }
         else
            {
            $pytanie = 404;
            break 1;
            }
      }
    case 390:
       echo "case 390<BR>";
       break;        
    case 404:
       echo "case 404<BR>";
       $warunek = true;     // !
       break;          

    default:
      {
      echo "DEFAULT<BR>";    
      break;
      }
  }

$ctr++;
echo "Loop: ".$ctr."<BR>";
}

echo "end<BR>";
exit;


?>


Ten post edytował cbagov 8.07.2008, 22:55:51
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 21.08.2025 - 03:59