La spiegazione migliore che riesco a pensare è che PHP lo consideri una struttura ad anello in modo che si adatti al modello di qualcosa che utilizza continue
e break
. La documentazione switch
non lasci molto ulteriore luce su di esso diverso
Si noti che a differenza di alcuni altri linguaggi, la continua affermazione vale per passare e agisce simile a rompere. Se hai un interruttore all'interno di un ciclo e desideri continuare con l'iterazione successiva del ciclo esterno, utilizza continua 2.
Quindi forse è perché, come un loop, interrompe l'esecuzione del resto del codice nella sua struttura.
Tuttavia, quando si utilizza un numero di livelli, questi due si comportano in modo diverso:
continue
senza un livello
<?php
for($i=0;$i<5;$i++) {
switch($i) {
case 2:
continue;
default:
echo $i, "\n";
}
echo "Finished with {$i}\n";
}
//0
//Finished with 0
//1
//Finished with 1
//Finished with 2
//3
//Finished with 3
//4
//Finished with 4
continue
con un livello
<?php
for($i=0;$i<5;$i++) {
switch($i) {
case 2:
continue 2;
default:
echo $i, "\n";
}
echo "Finished with {$i}\n";
}
//0
//Finished with 0
//1
//Finished with 1
//3
//Finished with 3
//4
//Finished with 4
break
senza un livello
<?php
for($i=0;$i<5;$i++) {
switch($i) {
case 2:
break;
default:
echo $i, "\n";
}
echo "Finished with {$i}\n";
}
//0
//Finished with 0
//1
//Finished with 1
//Finished with 2
//3
//Finished with 3
//4
//Finished with 4
break
con un livello
<?php
for($i=0;$i<5;$i++) {
switch($i) {
case 2:
break 2;
default:
echo $i, "\n";
}
echo "Finished with {$i}\n";
}
//0
//Finished with 0
//1
//Finished with 1
Si dovrebbe evitare l'uso delle parole "motivo" e "progettazione" quando si parla di 'php';) –
si può usare' continue 2' =) – cweinberger
Ho intenzione di indovinare che trattare 'switch' come un loop la struttura fornisce una certa coerenza programmatica a come funzionano 'break' e' continue' per ** tutte ** le strutture di looping. – zzzzBov