PHP foreach 迭代两次而不是一次


PHP foreach iterate twice instead of once

我有一个关于php中的foreach函数的问题:

目前我有:

<html>
<body>
<?php
$x=array("one","two","three", "four", "five", "six", "seven", "eight"); 
foreach ($x as $value)
  {
    echo $value . "<br />";
  }
?>

哪些输出:

one
two
three 
four
five
six
seven
eight

但是我如何使 foreach 循环迭代两次而不是一次,以便我得到:

two
four 
six 
eight

这可能吗?还是只使用 for 循环更好?

任何帮助将不胜感激,谢谢。

你的意思是跨过所有其他条目吗?你应该只使用 for 循环:

for($i = 1; $i < count($x); $i += 2)
{
    echo $x[$i] . '<br />';
}
<?php
    $i=1;
    $x=array("one","two","three", "four", "five", "six", "seven", "eight"); 
    foreach ($x as $value) {
        $i++;
        if($i%2==0){
          continue;
        }
      echo $value . "<br />";
    }
  ?>

如果"迭代两次"是指"跳过奇数条目":

$odd = FALSE;
foreach ($x as $value)
{
    $odd = !$odd;
    if($odd){
        continue;
    }
    echo $value . "<br />";
}

(如果你选择使用foreach,你需要计算自己。

也许这就是你想要的。

$t=count($x);
for($i=0;$i<$t;$i++){
   if($i%2==0 && $i>0){
      echo $x[$i]."<br>";
   }
}

问候!

$cnt = 0;
foreach ($x as $value)
{
  $cnt++;
  if ($cnt % 2 == 1) continue;
  echo $value . "<br />";
}

我想把这个带给@GordonM
仅假设数组按顺序索引顺序排列,才可以使用for
一个数组,例如

 array(2=>'one', 1=>'two', 4=>'three' ...)

会把你拖到地狱

<?php
$x=array("one", "two", "three", "four", "five", "six", "seven", "eight"); 
$i=2;
foreach ($x as $value) {
     if( ($i % 2)==0 ) {
        echo $value . "<br />";
     }
    $i++;
  }
?>