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