Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    while che identifica sia la fine sezione che la fine del while

    con questo codice:

    $values = array(1, 1, 1, 2, 2, 3, 3, 3);
    $prev = 0;
    $contatore=0;
    reset($values);
    while (list($chiave, $value) = each($values)) {
    //print("$prev != $value
    ");

    $contatore++;
    if (($prev != $value AND $prev!=null) or (count($values)==$contatore)) {
    print("fine Range
    ");
    }

    print("$contatore ->{$value}
    ");
    $prev = $value;
    }

    ottengo questo output:
    1 ->1
    2 ->1
    3 ->1
    fine Range
    4 ->2
    5 ->2
    fine Range
    6 ->3
    7 ->3
    fine Range
    8 ->3

    l'ultimo fine range dovrei ovviamente visualizzarlo dopo il record 8

    come posso fare?

    ciao a tutti e grazie anticipatamente per le eventuali risposte

  2. #2

  3. #3
    Originariamente inviato da filippo.toso
    Aggiungi il tuo codice DOPO il while {}
    scusami ma non ho capito... quale "mio codice?"

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Codice PHP:
    $values = array(11122333);
    $prev 0;
    $contatore=0;
    reset($values);
    while (list(
    $chiave$value) = each($values)) {
    //print("$prev != $value
    ");

    $contatore++;
    if ((
    $prev != $value AND $prev!=null) or (count($values)==$contatore)) {
    print("
    [b]fine Range[/b]
    ");
    }

    print("
    $contatore ->{$value}
    ");
    $prev = $value;
    }
    print("
    [b]fine Range[/b]
    "); 
    trova le differenze...

    Perdonami... ma un pochino di sforzo sarebbe anche richiesto...

  5. #5
    Originariamente inviato da clasku
    Codice PHP:
    $values = array(11122333);
    $prev 0;
    $contatore=0;
    reset($values);
    while (list(
    $chiave$value) = each($values)) {
    //print("$prev != $value
    ");

    $contatore++;
    if ((
    $prev != $value AND $prev!=null) or (count($values)==$contatore)) {
    print("
    [b]fine Range[/b]
    ");
    }

    print("
    $contatore ->{$value}
    ");
    $prev = $value;
    }
    print("
    [b]fine Range[/b]
    "); 
    trova le differenze...

    Perdonami... ma un pochino di sforzo sarebbe anche richiesto...
    grazie per la risposta ma l'output del tuo codice mi restituisce questo

    1 ->1
    2 ->1
    3 ->1
    fine Range
    4 ->2
    5 ->2
    fine Range
    6 ->3
    7 ->3
    fine Range
    8 ->3
    fine Range

    quindi non funziona

    in ogni caso il mio obiettivo era quello di riuscire ad utilizzare un solo if all'interno del while perchè dovrei fare una serie di azioni alla fine di ogni sezione

    ma mi pare che non sia possibile... o sbaglio?

  6. #6
    Originariamente inviato da mansportivo
    grazie per la risposta ma l'output del tuo codice mi restituisce questo

    1 ->1
    2 ->1
    3 ->1
    fine Range
    4 ->2
    5 ->2
    fine Range
    6 ->3
    7 ->3
    fine Range
    8 ->3
    fine Range

    quindi non funziona

    in ogni caso il mio obiettivo era quello di riuscire ad utilizzare un solo if all'interno del while perchè dovrei fare una serie di azioni alla fine di ogni sezione

    ma mi pare che non sia possibile... o sbaglio?
    così modificato sembra funzionare anche se mi pare un pò contorto:

    $values = array(1, 1, 1, 2, 2, 3, 3, 3);
    $prev = 0;
    $contatore=0;
    reset($values);
    while (list($chiave, $value) = each($values)) {
    //print("$prev != $value
    ");

    $contatore++;
    if (($prev != $value AND $prev!=null) or (count($values)==$contatore)) {
    if (count($values)==$contatore) print("$contatore ->{$value}
    ");
    print("fine Range
    ");
    }

    if (count($values)!=$contatore) print("$contatore ->{$value}
    ");
    $prev = $value;
    }

  7. #7
    Per favore, usa il bbCode PHP per postare il tuo codice.

    Codice PHP:
    <?php 

    $values 
    = array(11122333);
    $prev 0;
    foreach (
    $values as $value) {
        if ((
    $prev != $value) && !is_null($prev)) {
            print(
    'Range:
    '
    );
        }
        print(
    $value '
    '
    );
        
    $prev  $value;
    }
    print(
    'Range:
    '
    );

    ?>
    Per il resto, mi compiaccio che clasku concordi con il mio punto di vista...

  8. #8
    Originariamente inviato da filippo.toso
    Per favore, usa il bbCode PHP per postare il tuo codice.

    Codice PHP:
    <?php 

    $values 
    = array(11122333);
    $prev 0;
    foreach (
    $values as $value) {
        if ((
    $prev != $value) && !is_null($prev)) {
            print(
    'Range:
    '
    );
        }
        print(
    $value '
    '
    );
        
    $prev  $value;
    }
    print(
    'Range:
    '
    );

    ?>
    Per il resto, mi compiaccio che clasku concordi con il mio punto di vista...
    quindi non è possibile scrivere tutto nell'if all'interno del while (o del foreach)

    questo almeno l'ho capito o nemmeno questo....

  9. #9
    Originariamente inviato da mansportivo
    quindi non è possibile scrivere tutto nell'if all'interno del while (o del foreach)
    Si potrebbe anche fare, ma perchè rendere più complicato il codice quando può essere semplice ed elengante allo stesso tempo?

  10. #10
    Originariamente inviato da filippo.toso
    Si potrebbe anche fare, ma perchè rendere più complicato il codice quando può essere semplice ed elengante allo stesso tempo?
    perchè dovendo effettuare alcune operazioni alla fine di ogni sezione ed alla fine del ciclo while dovrei: o scrivere una funzione apposita da richiamarla in due punti dello script oppure ripetere lo stesso codice in 2 punti diversi dello script

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.