2008-10-16 12 views

Odpowiedz

395
switch ($value) 
{ 
    case 1: 
    case 2: 
     echo "the value is either 1 or 2."; 
    break; 
} 

ten nazywany jest „upadkiem” bloku przez przypadek. Termin występuje w większości języków implementujących instrukcję switch.

13

Spróbuj

switch($value) { 
    case 1: 
    case 2: 
     echo "the value is either 1 or 2"; 
     break; 
} 
45

nie będę odśwież innych odpowiedzi, ponieważ są one poprawne, ale dodam tylko, że nie można użyć przełącznika do bardziej „skomplikowanych” oświadczenia, np: do sprawdź, czy wartość jest "większa niż 3", "od 4 do 6" itd. Jeśli potrzebujesz czegoś takiego, trzymaj się instrukcji if lub jeśli jest szczególnie silna potrzeba dla switch, wtedy możesz z niego korzystać back to front:

switch (true) { 
    case ($value > 3) : 
     // value is greater than 3 
    break; 
    case ($value >= 4 && $value <= 6) : 
     // value is between 4 and 6 
    break; 
} 

Ale jak powiedziałem, osobiście skorzystam z if oświadczenie tam.

+1

Cieszę się, że polecam jeśli() nad przełącznikiem() w tym przypadku. Ten rodzaj przełącznika tylko zwiększa złożoność, IMO. – moo

+1

Tak, musiałbyś mieć dość nieodparty powód, by wybrać ten styl, ale dobrze jest wiedzieć, że to możliwe. – nickf

+2

Naprawdę cieszę się, że się tego nauczyłem.Za każdym razem, gdy buduję projekt w języku Basic-y, brakuje mi stylu 'switch()' w stylu C, a kiedy pracuję w języku C, naprawdę brakuje mi 'Select Case', który jest naprawdę skrótowy sposób powiedzenia "jest duży blok jeśli, inaczej jeśli, inaczej - jeśli ... tutaj". –

-2

Najlepszy sposób może być, jeśli masz inne żądanie. Ponadto może być łatwiejsze i bardziej przejrzyste w użyciu.

Przykład:

<?php 
$go = $_REQUEST['go']; 
?> 
<?php if ($go == 'general_information'){?> 
<div> 
echo "hello"; 
}?> 

Zamiast korzystać z funkcji, które nie będą dobrze pracować z PHP, zwłaszcza gdy masz PHP w HTML.

+4

jak to jest jaśniejsze niż instrukcja switch? –

97

Jeśli trzeba użyć || z switch to można spróbować:

$v = 1; 
switch (true) { 
    case ($v == 1 || $v == 2): 
     echo 'the value is either 1 or 2'; 
     break; 
} 

Jeśli nie preferowanym rozwiązaniem byłby

switch($v) { 
    case 1: 
    case 2: 
     echo "the value is either 1 or 2"; 
     break; 
} 

Kwestia jest taka, że ​​zarówno metoda nie jest skuteczna, gdy do czynienia z duże przypadki ... wyobrazić sobie: 1 do 100 to zadziała idealnie

$r1 = range(1, 100); 
$r2 = range(100, 200); 
$v = 76; 
switch (true) { 
    case in_array($v, $r1) : 
     echo 'the value is in range 1 to 100'; 
     break; 
    case in_array($v, $r2) : 
     echo 'the value is in range 100 to 200'; 
     break; 
} 
1

użyć tego kodu:

switch($a) { 
case 1: 
case 2: 
    ....... 
    ....... 
    ....... 
    break; 
} 

blok nazywany zarówno 1 i 2.

1
switch ($value) 
{ 
    case 1: 
    case 2: 
     echo 'the value is either 1 or 2'; 
    break; 
} 
9

Proponuję przejść http://php.net/manual/en/control-structures.switch.php (ręczne)

switch ($your_variable) 
{ 
    case 1: 
    case 2: 
     echo "the value is either 1 or 2."; 
    break; 
} 

wyjaśnienia

Podobnie jak dla wartości, którą należy wykonać pojedyncza instrukcja, można ją umieścić bez przerwy jako , aż do momentu, gdy zostanie znalezione przerwanie, to zostanie uruchomione wykonanie kodu, a jeśli zostanie znaleziona przerwa, to wyjdzie z obudowy przełącznika.

33

spróbować z tych poniższych przykładach w tym artykule: http://phpswitch.com/

możliwych przypadków Switch:

(I). Prosta instrukcja przełączania

Instrukcja przełącznika jest cudowna i magiczna. Jest to część języka, która pozwala wybierać między różnymi opcjami wartości i uruchamiać różne fragmenty kodu w zależności od ustawionej wartości.

Każda możliwa opcja jest podana przez przypadek w instrukcji switch.

przykład:

switch($bar) 
{ 
    case 4: 
     echo "This is not the number you're looking for.\n"; 
     $foo = 92; 
} 

(II). kod Wyznaczanie zasięgu bloki

Główną zastrzegające przełącznika jest to, że każdy przypadek będzie działać na do następnego, jeśli nie zatrzymać go przerwie. Jeśli prostym przypadku wyżej rozszerzony na przypadek 5:

Przykład:

case 4: 
    echo "This is not the number you're looking for.\n"; 
    $foo = 92; 
    break; 

case 5: 
    echo "A copy of Ringworld is on its way to you!\n"; 
    $foo = 34; 
    break; 

(III). Korzystanie fallthrough wielu przypadkach

Ponieważ przełącznik będzie biec kod aż znajdzie sobie przerwę, to jest dość łatwe do podjęcia koncepcję fallthrough i uruchomić tego samego kodu na więcej niż jednym przypadku:

Przykład:

przypadek 2:

case 3: 
case 4: 
    echo "This is not the number you're looking for.\n"; 
    $foo = 92; 
    break; 

case 5: 
    echo "A copy of Ringworld is on its way to you!\n"; 
    $foo = 34; 
    break; 

(IV). zaawansowane przełączające: Szafy Stan

przełącznik PHP nie tylko pozwala na przełączenie na wartość danej zmiennej: można użyć dowolnego wyrażenia jako jeden z przypadków, o ile daje wartość przypadek do użycia. Jako przykład, oto prosty walidator napisane przy użyciu przełącznika:

Przykład:

switch(true) 
{ 
    case (strlen($foo) > 30): 
     $error = "The value provided is too long."; 
    $valid = false; 
    break; 

    case (!preg_match('/^[A-Z0-9]+$/i', $foo)): 
     $error = "The value must be alphanumeric."; 
    $valid = false; 
    break; 

    default: 
    $valid = true; 
    break; 
} 

myślę, że może to pomóc w rozwiązaniu problemu.

+0

Czy masz przypadek użycia rzeczywistego świata dla przykładu (iv)? –

+0

Nie, nie miałem tego teraz @PedroMoreira –

Powiązane problemy