выполнить код изменения в foreach на полпути через итерации - PullRequest
2 голосов
/ 10 мая 2011

Я пытаюсь создать оператор php foreach, который выводит другой код для первых 5 итераций, а затем выполняет другой вывод для остальных.

Я нашел этот фрагмент, который делает разрыв в заданномпредел, но как я могу продолжить с последней итерации в другом цикле foreach?Это, вероятно, не лучший способ сделать это в любом случае.

 $i = 0;
foreach ($arr as $k => $v) {
    /* Do stuff */
    if (++$i == 2) break;
}

Возможно ли это?Как мне это сделать?

Спасибо!Zeem

Ответы [ 4 ]

4 голосов
/ 10 мая 2011

Вы можете использовать array_slice для этого:

foreach (array_slice($arr, 0, 5, true) as $k => $v) {
    /* Do stuff 1-5 */
}
foreach (array_slice($arr, 5, null, true) as $k => $v) {
    /* Do stuff 6-end */
}
0 голосов
/ 10 мая 2011

Я предполагаю, что ваш массив не является ассоциативным, и поэтому $ k будет числовым индексом.Если нет, то вам понадобится ваш $ i.

foreach ($arr as $k => $v) {
    if ($k < 5) {
        Do stuff
    } else {
        Do other stuff
    }
}
0 голосов
/ 10 мая 2011
$i = 0;
foreach ($arr as $k => $v) {
    if ($i < 5) { 
        /* do stuff */
    } else { 
        /* other stuff */
    }
    $i++;
}
0 голосов
/ 10 мая 2011

Вы ищете что-то вроде ...?

$i = 0;
foreach ($var as $k => $v) {
    if ($i < 5) {
        // do something here for the first five iterations
    }
    else {
        // do something else here for further iterations
    }
    $i++;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...