2011-07-22 9 views
1

foreachループのいくつかの繰り返しをスキップします。foreachループ中にいくつかの繰り返しをスキップします

私はこのコードを持っています。

$myarray = array("a","b","c","d","e","f","g","h"); 
    $skip = 5; 
    foreach($myarray as $key => $letter){ 
     if($key < $skip){ 
      $key = $skip; 
     } 
     echo $letter; 
    } 

このコードではこのトリックは行いません。しかし、それを使って私は自分が望むものを説明することができます。私は実際に次の反復のポインタを動かすべきです。それは、私が望むものへの鍵の値を変更することで十分であると考えました。私は可能な解決策がこれであることを理解しています。

$myarray = array("a","b","c","d","e","f","g","h"); 
    $skip = 5; 
    foreach($myarray as $key => $letter){ 
     if($key < $skip){ 
      continue; 
     } 
     echo $letter; 
    } 

でも、これはやはり繰り返しのステップです。私は完全に反復を飛び越したいと思います。本当に仕事(一般的には及び反復)どのようforeachループではありません

おかげ

+0

あなたはforeachでそれをすることはできません、あなたは私があなたのタイトルで推測していたものではない、定期的なforループを使用しなければならないでしょう... – Paulpro

+0

ITs printing fgh、それはそれを意味しますスキップ –

答えて

1

あなただけのループの代わりに

EDITのために使用することができます$skip回の間に$array->next()に電話することができます。通常のforループを簡単に使用できない場合があります。たとえば、DatePeriodオブジェクトを反復するときです。

+1

こんにちは?それは-1を与える。 ($ i = 5; $ i rabudde

+0

ありがとう、ありがとうございました。 –

0

continueバージョン(これはうまくいきます;ループ本体の最初のものであれば本質的に同じです)、または最初の要素を含まない別の配列を繰り返して作成できます通常のforループを使用することができます。

for($i = $skip; $skip > 0, $i < count($myarray); $i++) { 
    // do some stuff 
} 
2

参照:array_slice

$myarray = array("a","b","c","d","e","f","g","h"); 
foreach(array_slice($myarray, 5) as $key => $letter){ 
    echo $letter; 
} 
0
foreach (array_slice($myarray, 5) as $key => $letter) { 
[...] 
} 
+0

? 「fgh」は、尊敬された結果と思われます。これは、ポスターによる受け入れられた解決策と同じ結果ですから! – rabudde

0
<?php 

$myarray = array("a","b","c","d","e","f","g","h"); 
    $skip = 5; 
    $index = 0 ; 
    foreach($myarray as $key => $letter){ 
     if(($index % $skip) == 0){ 
      echo $letter; 
     }  
     $index++; 

    } 

?> 
0
$myarray = array("a","b","c","d","e","f","g","h"); 

foreach (new LimitIterator (new ArrayIterator ($myarray), 5) as $letter) 
{ 
     echo $letter; 
} 
0

関連する問題