2011-07-04 6 views
2

私は1000回以上ループするforeach文を使用しています。私はそれが1000に到達し、停止するまで50のループごとに結果をエコーする方法があるかどうか疑問に思っていました。foreachを分割する方法は1000ループになり、50ループごとに出力をエコーし​​ますか?

私はクローラを書いているので、スクリプト全体の何回かの結果を見たいので、何度も何度も待っています。

ありがとう

答えて

3

作品のDhruvPathakのソリューションの一種に、しかし、正しい答えは、このソリューションでは

$freq = 50; 
for($i = 0 ;$i < 1000 ;$i++) 
{ 
   /* some work here */ 

    if($i % $freq  == ($freq-1)) 
      echo  "my message \n"; 
} 
if($i % $freq  != ($freq-1)) 
   echo  "last echo \n"; 

ようになり、エコーは各50の後に、各50の後に行う(というよりも、最初の項目の後にそれをやってとされますアイテム)、必要に応じて最後に最後のエコーが行われます。

8

if条件に "%"演算子を使用できます。

for($i = 0 ;$i < 1000 ;$i++) 
{ 
    /* some work here */ 

    if($i % 50 == 0) 
     echo "my message \n"; 

} 
+0

を使用することができます!ありがとう、私はそれを受け入れるために12分待たなければならない。 – EnexoOnoma

3

あなたはカウンターを維持し、すべての反復でそれをチェックする必要があります:

$i = 1; 

foreach ($something as $current) { 

    if ($i % 50 == 0) { 
     echo "Iteration: $i \n" ; 
    } 

    $i++ ; 

} 

modulo operator %が、この場合に便利です。

+0

あなたのメールアドレス: – EnexoOnoma

+0

:休憩:奇妙な言葉を無視してください。ちょうどおしゃれです。 – Fanis

1

あなたもそう、それは簡単ということでした。この1

$i = 0; 
    while($i <1000): 
     // do your work 

     if($i % 50 == 0){ 
      echo "message \n"; 
     } 
     $i++ ; 
    endwhile; 
+0

メッセージをエコーし​​たときに、なぜ仕事をやり直すのですか? – unbeli

+0

@unbeli:今修正しました – chhameed

関連する問題