Gibt es eine Möglichkeit, einen ODER-Operator oder einen gleichwertigen Operator in einem PHP-Switch zu verwenden?
Zum Beispiel so etwas:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Gibt es eine Möglichkeit, einen ODER-Operator oder einen gleichwertigen Operator in einem PHP-Switch zu verwenden?
Zum Beispiel so etwas:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Antworten:
switch ($value)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
Dies wird als "Durchfallen" des Fallblocks bezeichnet. Der Begriff existiert in den meisten Sprachen, die eine switch-Anweisung implementieren.
Wenn Sie verwenden müssen , ||
mit switch
versuchen Sie können dann:
$v = 1;
switch (true) {
case ($v == 1 || $v == 2):
echo 'the value is either 1 or 2';
break;
}
Wenn nicht, wäre Ihre bevorzugte Lösung gewesen
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
Das Problem ist, dass beide Methoden bei großen Fällen nicht effizient sind. Stellen Sie sich vor 1
, 100
dies würde perfekt funktionieren
$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;
}
Ich werde die anderen Antworten nicht erneut veröffentlichen, da sie alle korrekt sind, aber ich möchte nur hinzufügen, dass Sie switch nicht für "kompliziertere" Anweisungen verwenden können, z. B.: Um zu testen, ob ein Wert "größer als 3" ist. " zwischen 4 und 6 "usw. Wenn Sie so etwas tun müssen, bleiben Sie bei der Verwendung von if
Anweisungen, oder wenn ein besonders starker Bedarf besteht, können switch
Sie diese von hinten nach vorne verwenden:
switch (true) {
case ($value > 3) :
// value is greater than 3
break;
case ($value >= 4 && $value <= 6) :
// value is between 4 and 6
break;
}
aber wie gesagt, ich würde dort persönlich eine if
Aussage verwenden.
switch()
, und wenn ich in einer C-ischen Sprache arbeite, vermisse ich es wirklich Select Case
, was eine Abkürzung für "es gibt eine große" ist Block von wenn, sonst wenn, sonst-wenn ... hier ".
you can't use switch for more "complicated" statements
ist es can't
oder ist es shouldn't
? weil in Ihrem Beispiel Siecan
switch (true)
Dingen ist kein gewöhnlicher Anwendungsfall für Switches.
Versuchen Sie es mit den folgenden Beispielen in diesem Artikel: http://phpswitch.com/
Mögliche Schalterfälle:
(ich). Eine einfache switch-Anweisung
Die switch-Anweisung ist wunderbar und magisch. Es ist ein Teil der Sprache, mit dem Sie zwischen verschiedenen Optionen für einen Wert wählen und je nach festgelegtem Wert verschiedene Codeteile ausführen können.
Jede mögliche Option wird durch einen Fall in der switch-Anweisung angegeben.
Beispiel:
switch($bar)
{
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
}
(ii). Codeblöcke abgrenzen
Die größte Einschränkung des Schalters ist, dass jeder Fall in den nächsten übergeht, es sei denn, Sie stoppen ihn mit einer Pause. Wenn der obige einfache Fall auf Fall 5 ausgedehnt wird:
Beispiel:
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). Verwenden von Fallthrough für mehrere Fälle
Da der Switch den Code so lange ausführt, bis eine Unterbrechung festgestellt wird, ist es einfach genug, das Konzept des Fallthroughs zu verwenden und denselben Code für mehr als einen Fall auszuführen:
Beispiel:
Fall 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). Erweiterte Umschaltung: Zustandsfälle
Mit dem Schalter von PHP können Sie nicht nur den Wert einer bestimmten Variablen einschalten: Sie können einen beliebigen Ausdruck als einen der Fälle verwenden, sofern er einen Wert für den zu verwendenden Fall angibt. Als Beispiel ist hier ein einfacher Validator, der mit switch geschrieben wurde:
Beispiel:
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;
}
Ich denke, dies kann Ihnen helfen, Ihr Problem zu lösen.
Ich empfehle Ihnen, http://php.net/manual/en/control-structures.switch.php (Handbuch) durchzugehen.
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
Erläuterung
Wie für den Wert, den Sie für die Ausführung einer einzelnen Anweisung verwenden, können Sie ihn ohne Unterbrechung einfügen, bis oder solange keine Unterbrechung gefunden wird, wird der Code weiter ausgeführt, und wenn eine Unterbrechung gefunden wird, wird er aus dem Schalterfall entfernt.
http://php.net/manual/en/control-structures.switch.php Beispiel
$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;
}
Der beste Weg könnte sein, wenn sonst mit Anfrage. Dies kann auch einfacher und klarer zu bedienen sein.
Beispiel:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
Anstatt die Funktionen zu verwenden, die mit PHP nicht gut funktionieren, insbesondere wenn Sie PHP in HTML haben.