2009-09-30 7 views

Antwort

41

könnten Sie den Modulo-Operator

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

Wenn die Umstände es zulassen können Sie auch nur 'for ($ i = 0; i $ 500 <; $ i + = 5) {...} '. – Joey

+2

@Johannes Ich denke, er will die Verarbeitung für jede ganze Zahl von 0 bis n machen, aber eine Aktion für jedes fünfte Element auslösen. Ich könnte mich allerdings irren. – patros

+3

Beachten Sie, dass '(i% 5 == 0)' auf den ersten, sechsten, elften, ... Pässen laufen wird. Verwenden Sie '(i% 5 == 4)', um auf die fünfte, zehnte, fünfzehnte, ... führt statt. –

0

Es ist möglich, verwenden Sie eine Bedingung mit einem Modul zu verwenden, wie aufgezeigt. Sie können dies auch mit verschachtelten Schleifen tun.

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 
} 

Das funktioniert gut, wenn n ein Vielfaches von 5 sein wird garantiert, oder wenn Sie keine zusätzliche Veranstaltung über Brennen am Ende ist es egal. Andernfalls müssen Sie das zum Ende hinzufügen, und es macht es weniger schön.

//If n is not guaranteed to be a multiple of 5. 
while(i < n) 
{ 
    //loop body 
    ++i; 
} 

und Änderung int limit = n - 5 bis int limit = n - 5 - (n% 5)

2

Für eine HTML-Tabelle, versuchen Sie dies.

<?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

$ count sollte umbenannt werden. Der Name "count" weist darauf hin, dass Sie so viele Zellen bekommen würden. Wenn $ start nicht auf Null gesetzt ist, erhalten Sie keine Anzahl von Zellen gleich $ count. – Larsenal

+0

guter Punkt Larsenal – Steve

0

Eine weitere Variante:

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

Ich bin altmodisch, ich erinnere mich, als Teilung dauerte eine lange Zeit. Bei modernen CPUs spielt es wahrscheinlich keine Rolle.

+0

ist nicht das, wenn sollte wenn (j == 5) sein? – mhd

-1
// That's an easy one 

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

Der Code in dieser Schleife wird nicht bei jedem 5. Lauf aufgerufen, er wird jeweils aufgerufen! Nur deine Variable $ i wird bei jedem Lauf um 5 erhöht. – tbraun89

0

Dies funktioniert ein Live-Index innerhalb der foreach-Schleife zu erhalten:

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

}