2009-09-30 18 views

Respuesta

41

se puede utilizar el operador de módulo

for(int i = 0; i < 500; i++) 
{ 
    if(i % 5 == 0) 
    { 
     //do your stuff here 
    } 
} 
+4

Si las circunstancias lo permiten, también puede simplemente usar 'for ($ i = 0; $ i <500; $ i + = 5) {...} '. – Joey

+2

@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

+3

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. –

0

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)

2

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>
+0

$ debe cambiar el nombre. El nombre "recuento" sugiere que obtendrías tantas celdas. Si $ start no está configurado en cero, no obtendrá un número de celdas igual a $ count. – Larsenal

+0

buen punto Larsenal – Steve

0

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.

+0

no es el si debería ser si (j == 5)? – mhd

-1
// That's an easy one 

for($i=10;$i<500;$i+=5) 
{ 
    //do something 
} 
+4

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

0

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

} 
Cuestiones relacionadas