Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Operacje na SWITCH
Forum PHP.pl > Forum > Przedszkole
ed3k
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 ?
Cysiaczek
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.
ed3k
Nie wiem co to jest to bbcode. Dzieki za pomoc.
nevt
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. ?>
nospor
@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
nevt
@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.
nospor
@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
hacek
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
cbagov
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;


?>
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.