Esiste un modo per utilizzare un operatore "OR" o equivalente in uno switch PHP?
Ad esempio, qualcosa del genere:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Esiste un modo per utilizzare un operatore "OR" o equivalente in uno switch PHP?
Ad esempio, qualcosa del genere:
switch ($value) {
case 1 || 2:
echo 'the value is either 1 or 2';
break;
}
Risposte:
Se devi usare ||
con switch
allora puoi provare:
$v = 1;
switch (true) {
case ($v == 1 || $v == 2):
echo 'the value is either 1 or 2';
break;
}
Altrimenti la tua soluzione preferita sarebbe stata
switch($v) {
case 1:
case 2:
echo "the value is either 1 or 2";
break;
}
Il problema è che sia il metodo non è efficiente quando si tratta di grandi casi ... immaginare 1
per 100
questo dovrebbe funzionare perfettamente
$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;
}
Non ripubblicherò le altre risposte perché sono tutte corrette, ma aggiungerò semplicemente che non è possibile utilizzare switch per istruzioni più "complicate", ad esempio: per verificare se un valore è "maggiore di 3", " tra 4 e 6 ", ecc. Se hai bisogno di fare una cosa del genere, segui le if
istruzioni o se ce n'è una necessità particolarmente forte switch
, è possibile utilizzarlo da capo a piedi:
switch (true) {
case ($value > 3) :
// value is greater than 3
break;
case ($value >= 4 && $value <= 6) :
// value is between 4 and 6
break;
}
ma come ho detto, avrei usato personalmente una if
dichiarazione lì.
switch()
, e quando lavoro in un linguaggio C-ish mi manca davvero avere Select Case
, che è davvero un modo abbreviato per dire "c'è un grande blocco di if, else if, else-if ... here ".
you can't use switch for more "complicated" statements
è can't
o è shouldn't
? perché nel tuo esempio tucan
switch (true)
cose non è un normale caso d'uso di switch.
Prova con i seguenti esempi in questo articolo: http://phpswitch.com/
Casi di commutazione possibili:
(io). Una semplice istruzione switch
L'istruzione switch è meravigliosa e magica. È una parte della lingua che consente di selezionare tra diverse opzioni per un valore ed eseguire diverse parti di codice a seconda del valore impostato.
Ogni possibile opzione è data da un caso nell'istruzione switch.
Esempio :
switch($bar)
{
case 4:
echo "This is not the number you're looking for.\n";
$foo = 92;
}
(ii). Delimitazione di blocchi di codice
Il principale avvertimento dell'interruttore è che ciascun caso passerà al successivo, a meno che non lo si fermi con una pausa. Se il semplice caso precedente è esteso al caso 5:
Esempio :
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). Utilizzo di fallthrough per più casi
Poiché switch continuerà a eseguire il codice fino a quando non trova un'interruzione, è abbastanza facile prendere il concetto di fallthrough ed eseguire lo stesso codice per più di un caso:
Esempio :
caso 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). Commutazione avanzata: casi di condizione
L'opzione PHP non ti consente solo di attivare il valore di una particolare variabile: puoi usare qualsiasi espressione come uno dei casi, purché fornisca un valore da utilizzare per il caso. Ad esempio, ecco un semplice validatore scritto usando switch:
Esempio :
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;
}
penso che questo possa aiutarti a risolvere il tuo problema.
Ti suggerisco di consultare http://php.net/manual/en/control-structures.switch.php (manuale)
switch ($your_variable)
{
case 1:
case 2:
echo "the value is either 1 or 2.";
break;
}
spiegazione
Come per il valore che si desidera eseguire una singola istruzione, è possibile inserirlo senza interruzione poiché fino a quando non viene rilevata l'interruzione continuerà l'esecuzione del codice e se l'interruzione viene rilevata uscirà dalla custodia.
http://php.net/manual/en/control-structures.switch.php Esempio
$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;
}
Il modo migliore potrebbe essere se altro con la richiesta. Inoltre, questo può essere più semplice e chiaro da usare.
Esempio:
<?php
$go = $_REQUEST['go'];
?>
<?php if ($go == 'general_information'){?>
<div>
echo "hello";
}?>
Invece di usare le funzioni che non funzioneranno bene con PHP, specialmente quando hai PHP in HTML.