Rango? foreach? Mmmmm …. Lo primero que se viene a la cabeza es construir un array con todos los valores del rango y pasar este array por el bucle foreach. Por ejemplo, para hacer un foreach para todos los números entre el 1 y 9, ambos incluidos:
$numeros = array(1, 2, 3, 4, 5, 6, 7, 8, 9);

echo "<ul">;

foreach($numeros as $numero) {
     echo "<li>Número: ". $numero . "</li>;
}

echo "</ul>
El ejemplo anterior es totalmente válido, sólo tiene un «pero». Imagina que queremos hacer el foreach para todos los números entre el 0 y 100.000. ¿Vas a construir el array con todo esos números de forma manual? Ni loco. Si piensas en utilizar un bucle for para construir el array o hacer directamente el bucle, puedes, te saldrá bien:
echo "<ul">;

for($numero = 1, $numero <= 100000, $numero += 1 ) {
     echo "<li>Número: ". $numero . "</li>;
}

echo "</ul>
Y existe otra posibilidad, utilizar la función range(). Esta función nativa de PHP permite crear un array que contenga todos los valores comprendidos en un determinado rango y con el incremento que deseemos entre cada valor. Tiene la siguiente sintaxis:
array range ( mixed $comienzo , mixed $final [, number $incremento = 1 ] )
Por ejemplo:

  • Rango del 0 al 100 con incrementos de 1 (el incremento de 1 puede omitirse): range(0, 100)
  • Rango del 0 al 100 con incrementos de 3: range(0, 100, 3)
Así, podríamos hacer un bucle foreach para todos los números entre 0 y 100.000 con incrementos de 1:
echo "<ul">;

foreach( range(0, 100000) as $numero ) {
     echo "<li>Número: ". $numero . "</li>;
}

echo "</ul>
range() también se puede utilizar con letras. Por ejemplo:
echo "<ul">;

//array("a", "b", "c", "d", "e", "f")
foreach( range("a", "f") as $letra ) {
     echo "<li>Letra: ". $letra . "</li>;
}

echo "</ul>
Para hacer lo mismo con un bucle for habría que echar mano de chr() y controlar el valor decimal de la tabla ASCII correspondientes al rango de letras que deseemos. Por ejemplo, el rango a – f corresponde en la tabla ASCII a 97 – 102:
echo "<ul">;

for( $char = 97, $char <= 102, $char += 1 ) {
     echo "<li>Letra: ". chr($char) . "</li>;
}

echo "</ul>
¿Alguna sugerencia más para bucles sobre un rango de datos?
Compartir

Mi nombre es Alexander fundador y CEO, y me gusta llamarme un Geek. Amo la informática, tecnología y todo lo que está relacionado con ella. Inicié este sitio con la intención de compartir conocimientos como cursos en línea, tutoriales y videotutoriales. Estoy muy entusiasmado con la información que he descubierto y compartido hasta el momento. La verdad es que lo he hecho con el mayor de los gustos. Así es, soy un Geek con una visión para compartir conocimiento. Leer mas... 6c435j