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;
}