在php中选择性迭代数组

时间:2009-05-28 23:08:50

标签: php arrays loops

有没有办法迭代数组但是对每个其他元素执行操作? 即如果我有一个包含13个元素的数组,我该如何处理仅元素2,4,6,8,10和12?

4 个答案:

答案 0 :(得分:3)

foreach($array as $val) {
  if(($i++ % 2) == 0) {
    ...do stuff here...
  }
}

答案 1 :(得分:1)

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)。

答案 2 :(得分:0)

修复cletuses答案以获得更快的速度并修复拼写错误:

for ($i = 1, $j = count($array); $i < $j; $i += 2) {
    // code
}

答案 3 :(得分:0)

已经发布的答案的另一个变体......类似于Phil Carter的回答。如果数组具有数字索引,则可以在foreach中使用该索引,而不是管理单独的计数器变量:

foreach ($array as $i => $v) {
  if (! ($i % 2)) {
  // do stuff to $v
}