a ver si puedo explicarlo
Código PHP:
$valor = current($ciudades);//aquí se le asigna el dato que tenga el array al principio
echo ("El valor es: $valor<br>");//se imprime el valor que esta en la variable $valor
next($ciudades);//cambias el puntero al siguiente dato del arreglo pero
//$valor sigue teniendo el mismo valor es decir el que se asigno anteriormente que el el primer valor del arreglo
$valor=next($ciudades);//asignamos el dato dos del arreglo a la variable $valor
echo ("El valor es: $valor<br>");//se imprime el segundo dato.
como vez, $valor no cambia con el simple echo de que tu cambies el puntero del arreglo, hay que volverla a asignar.
saludos.