Подтвердить что ты не робот

Получение foreach для пропуска итераций

Мне в основном нужно что-то внутри цикла foreach, которое пропустит первые 10 итераций массива.

foreach($aSubs as $aSub){
   if($iStart > '0')
   //Skip first $iStart iterations.  Start at the next one
}

Спасибо

4b9b3361

Ответ 1

Запустите счетчик и используйте continue, чтобы пропустить первые десять циклов:

$counter = 0 ;
foreach($aSubs as $aSub) {
    if($counter++ < 10) continue ;
    // Loop code
}

Ответ 2

Использование итераторов:

$a = array('a','b','c','d');
$skip = 2;
foreach (new LimitIterator(new ArrayIterator($a), $skip) as $e)
{
  echo "$e\n";
}

Вывод:

c
d

Или используя индекс (если массив имеет целые ключи от 0.. n-1):

foreach ($a as $i => $e)
{
  if ($i < $skip) continue;
  echo "$e\n";
}

Ответ 3

Если $aSubs не является объектом класса, который реализует Iterator, а индексы являются последовательными целыми числами (начиная с нуля), было бы проще:

$count = count($aSubs);
for($i = 9, $i < $count; $i++) {
    // todo
}

Ответ 4

На самом деле вам не нужно объявлять другую переменную $counter, используя преимущество цикла foreach следующим образом:

foreach ($aSubs as $index => $aSub) {
    if ($index < 10) continue;
    // Do your code here
}

Это лучше, чем объявление другой переменной вне цикла foreach.