Uno switch...dinamico?

Salve a tutti!

Passo subito all'esposizione del mio problema.

Dunque, ho creato due funzioni di cui una ritorna un'array ad indici numerici con un certo numero di valori, secondo il seguente schema:

array(0 => 'main',
          1 => 'second',
          2 => 'boh')

Tale array viene poi passato ad una seconda funzione che ha il compito di gestire tutto il contenuto dell'array passatogli, mi spiego meglio.

Ipotizzando che ciascuno dei valori ('main', 'second', 'boh') siano delle pagine, questa funzione qui permette di creare uno switch della variabile $_GET['pagina'] in modo da gestirne lo stampo della pagina stessa.

Presento quindi la suddetta funzione:

function ManagePlug($total) {
   switch($_GET['view']) {
         for($k=0; $k<=(count($total));$k++) {
            case ''.$total[$k].'':
            include_once "pages/$total[$k]/index.php";
            break;
         }
      default:
      include_once "main/index.php";
      break;
   }
}

Una volta richiamata però presenta il seguente errore:

Parse error: syntax error, unexpected T_FOR, expecting T_CASE or T_DEFAULT or '}'

Cercando in giro non ho trovato granchè, esclusa una discussione completamente in inglese dalla quale non ci ho capito molto....

Attendo vostre illuminazioni  :)

inviato 7 anni fa
Newbie
X 0 X

Ti da errore semplicemente perchè questa non è la sintassi corretta dello switch, devi scriverti i 'case' dello switch manualmente.

risposto 7 anni fa
Hroud
X 0 X

ciao, prova così, anche perchè la cosa che hai scritto tu non è che sia tanto lecita:

function ManagePlug($total, $view) {
/* check dell'array $_GET, si presume indi che $_GET['view'] sia passato come parametro $view */
foreach ($total as $tot) {
if ($view == $tot) {
include_once 'pages/'. $tot. '/'; //index.php chiamata di default, nella conf di default
} else {
include_once "main/";
}
}
//potresti interrompere il foreach con un break...
risposto 7 anni fa
larchitetto
modificato 7 anni fa
X 0 X

Anzitutto scusate la mia assenza da tale discussione, ma sono stato 2 settimane e mezzo in vacanza, e non avevo nè internet nè pc  :(

Ad ogni modo riprendo subito la prima risposta:

Ti da errore semplicemente perchè questa non è la sintassi corretta dello switch, devi scriverti i 'case' dello switch manualmente.

Sono perfettamente a conoscenza dell'errore di sintassi, difatti avevo subito posto rimedio con questo codice:

function ManagePlug($total) {
   for($k=0; $k<=(count($total));$k++) {
      if($_GET['view'] == $total[$k]) {
         include_once "pages/$total[$k]/index.php";
      }
   }
}

tuttavia ho postato comunque il mio problema perchè anche avendo risolto, volevo un consiglio da voi programmotori sicuramente piu' esperti di me, per rendere il codice piu' snello e semplice  ;)

Per quanto riguarda la risposta di larchitetto ringrazio per il codice realizzato, l'ho preso già in considerazione e andando avanti scopriro' sicuramente pregi e difetti del mio codice e di quello da te postato così da decidere quale utilizzare  :)

In conclusione ringrazio entrambi per le risposte che mi avete dato  O0

 :bye:

risposto 7 anni fa
Newbie
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili