Visualizzazione risultati 1 fino 11 di 11

Discussione: Switch -> ForEach come fare?

  1. #1
    Guest

    Predefinito Switch -> ForEach come fare?

    Ciao,

    vorrei trasformare il codice seguente in un foreach() ma non capisco come modificarlo...

    Questo è il codice che vorrei variare:

    Codice PHP:
    switch ($yDati)
    {
    case
    'AASS': { return $AASS = Tipo($Tipo, $Posi, $Stil, $Comp); break; }
    case
    'AASS': { return $AAS = Tipo($Tipo, $Posi, $Stil, $Comp); break; }
    case
    'AAC': { return $AAC = Tipo($Tipo, $Posi, $Stil, $Comp); break; }
    case
    'AAD': { return $AAD = Tipo($Tipo, $Posi, $Stil, $Comp); break; }
    case
    'AADD': { return $AADD = Tipo($Tipo, $Posi, $Stil, $Comp); break; }
    case
    'ACSS': { return $ACSS = Tipo($Tipo, $Posi, $Stil, $Comp); break; }
    case
    'AS': { return $AS = Tipo($Tipo, $Posi, $Stil, $Comp); break; }
    };
    Il codice contiene molti più case ma per brevità l'ho tagliato.

    Grazie

    BottyE (ChiesaAperta)
    Ultima modifica di dreadnaut : 23-09-2008 alle ore 10.04.54

  2. #2
    Guest

    Predefinito

    Ehm, le due "funzioni" non c'entrano nulla l'una con l'altra, non puoi paragonarle!

    Tu di cosa hai bisogno?

    Il ciclo switch...case serve per trattare una variabile che può essere valorizzata in N modi.
    Il foreach invece è per gli array.


    Ciao!

  3. #3
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Forse intende qualcosa del genere?
    Codice PHP:
    $tipi = array( 'AASS', 'AAS', 'AAC', ... );

    foreach (
    $tipi as $t)
    if (
    $yDati == $t)
    return $
    $t = Tipo($Tipo, $Posi, $Stil, $comp);
    I punti vanno sostituiti con la lista completa (), mentre il doppio dollaro e' voluto.

  4. #4
    Guest

    Predefinito

    Azz, ma a quel punto non mi sembra che convenga molto...
    Forse dovrebbe rivedere il popolamento dell'array per crearne uno multidimensionale.


    ciao!

  5. #5
    Guest

    Predefinito

    Grazie!

    Faccio un paio di provole e quando mi son chiarito ...

  6. #6
    Guest

    Predefinito

    Forse non ho ben capito il codice io, ma invece di tutti quei cicli un "in_array" non svolgerebbe lo stesso compito?

    Ps. questa mi è nuova... a che serve il doppio dollaro?

  7. #7
    Guest

    Predefinito

    Mettendo questo codice :

    Codice PHP:
    $yCell = array('AASS', 'AAS', 'AAC', 'AAD', 'AADD');
    foreach (
    $yCell as $Cell)
    {
    if (
    $yDati == $Cell)
    echo
    '$$Cell : ' . $Cell . "<br>";
    return $
    $Cell = Tipo($Tipo, $Posi, $Stil, $comp);
    };
    ottengo :

    $$Cell : AASS

    Notice: Undefined variable: comp in C:\Programmi\Apache Group\Apache2\htdocs\ChiesaAperta\INC_\Bloc.inc on line 89
    $$Cell : AASS

    Notice: Undefined variable: comp in C:\Programmi\Apache Group\Apache2\htdocs\ChiesaAperta\INC_\Bloc.inc on line 89
    <qui mi inserisce un immagine non visibile perchè contiene solo il percorso>
    Notice: Undefined variable: comp in C:\Programmi\Apache Group\Apache2\htdocs\ChiesaAperta\INC_\Bloc.inc on line 89
    ...

    perchè non vedo l'mg?
    Perchè mi dice undefined comp?

    grazie
    Ultima modifica di debug : 23-09-2008 alle ore 11.08.17

  8. #8
    Guest

    Predefinito

    ChiesaAperta, quando devi stampare delle varibili all'interno di stringhe usa le virgolette (") anzichè i single quote (').

    Zorinick: http://www.php.net/manual/it/languag...s.variable.php


    Ciao!

  9. #9
    Guest

    Predefinito

    Grazie,
    ma il risultato non varia...

    un amico m'ha suggerito :

    eval('return $'.$yDati.' = Tipo($Tipo, $Posi, $Stil, $Comp);');

    che funzia, anche se non l'ho capita bene...
    inoltre mi piacerebbe capire xchè funzia solo in parte la vs soluzione...


    GRAZIE!

  10. #10
    Guest

    Predefinito

    Il precedente esempio che hai scritto conteneve $comp anzichè $Comp


    Ciao!

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    il problema piu' grosso credo sia la mancanza di graffe dopo l'if. Cosi' come e' scritto sopra esegue echo solo quando la condizione e' vera, ma return ad ogni iterazione (!? - cioe' alla prima, perche' return esce)

    Codice PHP:
    $yCell = array('AASS', 'AAS', 'AAC', 'AAD', 'AADD');
    foreach (
    $yCell as $Cell)
    {
    if (
    $yDati == $Cell) {
    echo
    '$$Cell : ' . $Cell . "<br>";
    return $
    $Cell = Tipo($Tipo, $Posi, $Stil, $Comp);
    }
    };
    eval() funziona, ma non e' necessario - il risultato e' lo stesso ottenuto con il doppio dollaro, ma piu' lento

    @zorinik: Il doppio dollaro serve per riferirsi indirettamente ad una variabile
    Codice PHP:
    $nome = 'var';
    $
    $nome = 'ciao';
    echo
    $var;
    Ultima modifica di dreadnaut : 23-09-2008 alle ore 13.01.10

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •