¿Cómo puedo realizar una acción dentro de un bucle for
cada 5 resultados?¿Cómo realizar una acción cada 5 resultados?
Básicamente, estoy tratando de emular una tabla con 5 columnas.
¿Cómo puedo realizar una acción dentro de un bucle for
cada 5 resultados?¿Cómo realizar una acción cada 5 resultados?
Básicamente, estoy tratando de emular una tabla con 5 columnas.
se puede utilizar el operador de módulo
for(int i = 0; i < 500; i++)
{
if(i % 5 == 0)
{
//do your stuff here
}
}
Es posible utilizar una condición con un módulo, como se ha señalado. También puede hacerlo con los bucles de anidación.
int n = 500;
int i = 0;
int limit = n - 5
(while i < limit)
{
int innerLimit = i + 5
while(i < innerLimit)
{
//loop body
++i;
}
//Fire an action
}
Esto funciona bien si n se garantiza que sea un múltiplo de 5, o si no se preocupan por disparar un evento extra al final. De lo contrario, tiene que agregar esto al final, y lo hace menos bonito.
//If n is not guaranteed to be a multiple of 5.
while(i < n)
{
//loop body
++i;
}
y el cambio int límite = n - 5 a límite int = n - 5 - (n% 5)
Para una tabla HTML, probar esto.
<?php $start = 0; $end = 22; $split = 5; ?> <table> <tr> <?php for($i = $start; $i < $end; $i++) { ?> <td style="border:1px solid red;" > <?= $i; ?> </td> <?php if(($i) % ($split) == $split-1){ ?> </tr><tr> <?php }} ?> </tr> </table>
Otra variación:
int j=0; for(int i = 0; i < 500; i++) { j++; if(j >= 5) { j = 0; //do your stuff here } }
estoy pasado de moda, recuerdo cuando la división llevó mucho tiempo. Con la CPU moderna, probablemente no importe mucho.
no es el si debería ser si (j == 5)? – mhd
// That's an easy one
for($i=10;$i<500;$i+=5)
{
//do something
}
El código en este ciclo no se invocará en cada 5ª ejecución, ¡se llamará en cada uno! Solo su variable '$ i' se incrementará en 5 cada ejecución. – tbraun89
Esto funciona para obtener un índice en vivo dentro del bucle foreach:
<?php
// Named-Index Array
$myNamedIndexArray = array('foo' => 'bar', 'go' => 'habs', 'CSGO_bestTeam' => 'fnatic', 'test' => 'one two', 'potato' => 'french fries', 'tomato' => 'ketchup', 'coffee' => 'expresso', 'window' => 'cleaner', 'truck' => 'load', 'nine' => 'neuf', 'ten' => 'dix');
// Numeric-Index Array of the Named-Index Array
$myNumIndex = array_keys($myNamedIndexArray);
foreach($myNamedIndexArray as $key => $value) {
$index = array_search($key,$myNumIndex);
if ($index !== false) {
echo 'Index of key "'.$key.'" is : '.$index.PHP_EOL;
if (($index+1) % 5 == 0) {
echo '[index='.$index.'] stuff to be done every 5 iterations'.PHP_EOL;
}
}
}
Si las circunstancias lo permiten, también puede simplemente usar 'for ($ i = 0; $ i <500; $ i + = 5) {...} '. – Joey
@Johannes Creo que quiere hacer procesamiento para cada número entero de 0 a n, pero activa una acción para cada 5to elemento. Sin embargo, podría estar equivocado. – patros
Tenga en cuenta que '(i% 5 == 0)' se ejecutará en la primera, sexta, undécima, ... pasada. Use '(i% 5 == 4)' para disparar en la quinta, décima, decimoquinta, ... pase en su lugar. –