выборочная итерация массива в php - PullRequest
1 голос
/ 29 мая 2009

Есть ли способ перебора массива, но выполнение операции над каждым другим элементом? т.е. если у меня есть массив с 13 элементами, как мне сделать что-то только с элементами 2,4,6,8,10 и 12?

Ответы [ 4 ]

3 голосов
/ 29 мая 2009
foreach($array as $val) {
  if(($i++ % 2) == 0) {
    ...do stuff here...
  }
}
1 голос
/ 29 мая 2009
for ($i=1; $i<sizeof($array); $i+=2) {
  // do stuff to $array[$i]
}

Вы также можете интегрировать его в цикл foreach:

$i = 0;
foreach ($array as $v) {
  if ($i++ & 1) continue;
  // do stuff to $v
}

Примечание: $i & 1 эквивалентно ($i % 2) == 1 (или просто $i % 2).

0 голосов
/ 29 мая 2009

Еще одна вариация уже опубликованных ответов ... Похоже на ответ Фила Картера. Если массив имеет числовой индекс, вы можете использовать его в foreach вместо управления отдельной переменной счетчика:

foreach ($array as $i => $v) {
  if (! ($i % 2)) {
  // do stuff to $v
}
0 голосов
/ 29 мая 2009

чтобы исправить ошибки ответьте для большей скорости и исправьте опечатки:

for ($i = 1, $j = count($array); $i < $j; $i += 2) {
    // code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...