2012-05-19 27 views
5

Ho una tale struttura di controllo:C'è qualche modo in php per rendere rigidi i casi di confronto di SWITCH opreator?

switch ($var) { 
    case TRUE: 
    break; 

    case FALSE: 
    break; 

    case NULL: 
    break; 
} 

E la mia NULL caso non è mai invocato perché, come ho trovato in PHP Manual:

noti che switch/case fa sciolto confronto.

So che posso usare al posto di IFSWITCH ma io non vorrei, ho già una certa IF's in ogni CASE della mia SWITCH.

C'è qualche modo di riscrivere in qualche modo SWITCH o di utilizzare alcuni trucchi per farlo confrontare i valori rigorosi?

risposta

7

Sì, si può fare

switch (true) { 
    case $var === TRUE: 
    break; 

    case $var === FALSE: 
    break; 

    case $var === NULL: 
    break; 
} 
+0

grande soluzione, grazie . Ma fa php per valutare ogni CASO ogni volta? – Green

+2

@Green È esattamente lo stesso di ogni istruzione switch: il primo caso che viene valutato su true viene immesso e l'esecuzione si arresta sull'istruzione break iniziale –

0

Questo è il modo in cui funziona lo switch - non c'è molto che si possa fare a riguardo.

L'unico modo che vedo sarebbe di apportare alcune modifiche al codice sorgente PHP e ricompilarlo; ma, poi, non si sia in esecuzione "PHP" più (e il vostro codice sarebbe fare affidamento su qualcosa di diverso "PHP")

Problemi correlati