Czy istnieje sposób użycia operatora „LUB” lub równoważnego w przełączniku PHP?
Na przykład coś takiego:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Czy istnieje sposób użycia operatora „LUB” lub równoważnego w przełączniku PHP?
Na przykład coś takiego:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Odpowiedzi:
switch ($value)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
Nazywa się to „wypadaniem” bloku skrzynki. Termin istnieje w większości języków implementujących instrukcję switch.
Jeśli trzeba użyć ||
z switch
czym 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łoby
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
Problem jest, że zarówno metoda nie jest skuteczna gdy ma do czynienia z dużymi przypadkach ... sobie wyobrazić, 1
aby 100
to będzie dział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;
}
Nie będę ponownie publikować innych odpowiedzi, ponieważ wszystkie są poprawne, ale dodam tylko, że nie można użyć przełącznika do bardziej „skomplikowanych” instrukcji, np .: aby sprawdzić, czy wartość jest „większa niż 3”, od 4 do 6 "itd. Jeśli chcesz coś takiego zrobić, trzymaj się if
instrukcji, lub jeśli jest to szczególnie potrzebne, możesz switch
użyć tego od początku:
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 if
użyłbym tam oświadczenia.
switch()
, a kiedy pracuję w języku C, naprawdę brakuje mi tego Select Case
, co jest naprawdę skrótowym sposobem powiedzenia „jest duży blok if, else if, else-if ... tutaj ".
you can't use switch for more "complicated" statements
jest can't
czy jest shouldn't
? ponieważ w twoim przykładzie tycan
switch (true)
rzecz nie jest zwykłym przypadkiem użycia przełącznika.
Spróbuj wykonać następujące przykłady w tym artykule: http://phpswitch.com/
Możliwe przypadki przełączników:
(ja). Prosta instrukcja zamiany
Instrukcja zamiany jest cudowna i magiczna. Jest to fragment języka, który 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). Ograniczanie bloków kodu
Głównym zastrzeżeniem przełącznika jest to, że każda skrzynka przechodzi do następnej, chyba że zatrzymasz ją przerwaniem. Jeśli powyższy prosty przypadek zostanie 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). Używanie przewrotności w wielu przypadkach
Ponieważ przełącznik będzie działał, dopóki nie znajdzie przerwy, łatwo jest przyjąć koncepcję przewrotu i uruchomić ten sam kod dla więcej niż jednego 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łączanie: przypadki warunkowe
Przełącznik PHP nie tylko pozwala na włączenie wartości konkretnej zmiennej: możesz użyć dowolnego wyrażenia jako jednego z przypadków, pod warunkiem, że daje on wartość do użycia przez przypadek. Oto przykład prostego walidatora napisanego 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.
Proponuję przejść przez http://php.net/manual/en/control-structures.switch.php (podręcznik)
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
wyjaśnienie
Podobnie jak w przypadku wartości, którą należy wykonać pojedynczą instrukcję, można ją wstawić bez przerwy, tak jak do momentu znalezienia przerwy, chyba że zostanie znaleziona przerwa, to będzie ona nadal wykonywać kod, a jeśli znaleziono przerwanie, wyjdzie ze skrzynki przełączników.
http://php.net/manual/en/control-structures.switch.php Przykład
$today = date("D");
switch($today){
case "Mon":
case "Tue":
echo "Today is Tuesday or Monday. Buy some food.";
break;
case "Wed":
echo "Today is Wednesday. Visit a doctor.";
break;
case "Thu":
echo "Today is Thursday. Repair your car.";
break;
default:
echo "No information available for that day.";
break;
}
Najlepszym sposobem może być skorzystanie z żądania. Ponadto może to być łatwiejsze i łatwiejsze w użyciu.
Przykład:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
Zamiast korzystać z funkcji, które nie działają dobrze z PHP, szczególnie gdy masz PHP w HTML.