No sé si es eso lo que buscás, pero si lo que querés es que TODO el switch se ejecute sólo una vez podrías hacer algo así:
Código PHP:
$ejecutar_switch = true;
if ($ejecutar_switch == true) {
$ejecutar_switch = false;
switch($variable) {
case 1:
// hacer algo
break;
case 2:
// hacer otra cosa
break;
default:
// opcíón por defecto
break;
}
}
Antes de entrar al switch se fija si el valor de $ejecutar_switch es true. La primera vez que llegues a este punto, va a ser así. Pero al entrar, "bloquea" el switch al pasar $ejecutar_switch a false. No va a volver a entrar (a menos que cambies nuevamente este valor).
Un ejemplo con un while (pero sería más o menos lo mismo si suás una función a la que podrías llamar desde distintos lugares; lo único es que $ejecutar_switch tiene que estar declarado fuera de la función o del switch):
Código:
$ejecutar_switch = true;
$i = 0;
while ($i<2) {
if ($ejecutar_switch == true) {
$ejecutar_switch = false; // va a entrar sólo una vez;
echo "test, dentro del switch";
switch($variable) {
case 1:
// hacer algo
break;
case 2:
// hacer otra cosa
break;
default:
// opcíón por defecto
break;
}
}
$i++;
}
Suerte