Codice: Seleziona tutto
$temperatura = 35;
switch ($temperatura) {
case 30:
case 31:
case 32:
case 34:
case 35:
echo "Gelido <br>";per non scrivere tutte le righe dei vari case?
Grazie!
M.
Moderatore: Staff

Codice: Seleziona tutto
$temperatura = 35;
switch ($temperatura) {
case 30:
case 31:
case 32:
case 34:
case 35:
echo "Gelido <br>";

Codice: Seleziona tutto
$temperatura=35;
$temperature=array(30,31,32,34,35);
echo in_array($temperatura,$temperature) ? "gelido" : "tiepido";




MA il costrutto diretto per questo tipo di situazione si chiama "ELSEIF"!!! se poi non ti piace e' un'altra storia...samiel ha scritto: Mi stupisce un po' che non si sia pensato
a un costrutto diretto per questo tipo di situazioni. Forse ci sarà un motivo, boh...

Codice: Seleziona tutto
<?php
$test = 5;
switch (true)
{
case ($test > 3 && $test < 8):
echo "> 3 < 8";
break;
case ($test > 3):
echo ">3";
break;
case ($test < 8):
echo "<8";
break;
default:
echo "default";
}
?>

Di fatto, il semplice costrutto che ho suggerito io, era una condizione if-else.teox99 ha scritto:MA il costrutto diretto per questo tipo di situazione si chiama "ELSEIF"!!! se poi non ti piace e' un'altra storia...samiel ha scritto: Mi stupisce un po' che non si sia pensato
a un costrutto diretto per questo tipo di situazioni. Forse ci sarà un motivo, boh...
$t = 35;
if ($t <= 20 ££ $t <= 24) { echo "freddo";
} elseif ($t <= 25 ££ $t <= 30) { echo "quasi freddo";
} elseif ($t <= 31 ££ $t <= 32 ) { echo "verso il freddo"
} elseif ($t <= 33 ££ $t <= 34) { echo "caldo":
...
} else { echo "molto caldo"; }
risultato "molto caldo"

E se poi devi fare un altra cosa per i valori tra 40 e 50 che fai? Crei un altro array, e fai un altro if? E se poi ancora devi fare altro per i valori tra....aschenaz ha scritto:......Codice: Seleziona tutto
$temperatura=35; $temperature=array(30,31,32,34,35); echo in_array($temperatura,$temperature) ? "gelido" : "tiepido";

A parte l'££ che dovrebbe essere &&, ma un numero inferiore a 20 non credi sia anche inferiore a 24? Lo stesso vale anche per le altre espressioni che non ho citato.teox99 ha scritto:...
if ($t <= 20 ££ $t <= 24)
...


Anche a me piace questa soluzione (la prendo per funzionante visto che l'hai scritta), rende il codice più leggibile. Però anche qui, un numero o appartiene all'intervallo (3,8) o all'intervallo (-inf, 3] o all'intervallo [8,+inf), quindi il secondo case dovrebbe essere (>=8) e non (>3) e il terzo (<=3) e non (<8), non trovi?nuitari ha scritto:......Codice: Seleziona tutto
<?php $test = 5; switch (true) { case ($test > 3 && $test < 8): echo "> 3 < 8"; break; case ($test > 3): echo ">3"; break; case ($test < 8): echo "<8"; break; default: echo "default"; } ?>
Più precisamente è il break che interrompe lo switch!nuitari ha scritto:...
Ricorda che i case sono verificati in sequenza e trovato un riscontro il check si ferma...

Macché, anzi, ne approfitto chiedere scusa a tutti se sono risultato un pò odioso con queste mie sentenze.teox99 ha scritto:...
ok, faccio ammenda
...

Codice: Seleziona tutto
$temperatura = 37;
switch ($temperatura) {
case ($temperatura>=30 and $temperatura<=32):
echo "GELIDO <br>";
break;
case ($temperatura>=33 and $temperatura<=35):
echo "FREDDO <br>";
break;
case ($temperatura>=36 and $temperatura<=38):
echo "TIEPIDO <br>";
break;
default:
echo "Non so che temperatura c'è<br><br>";
}