0

我对 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 循环更好?

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

4

6 回答 6

4

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

for($i = 1; $i < count($x); $i += 2)
{
    echo $x[$i] . '<br />';
}
于 2012-04-09T10:42:35.780 回答
3
<?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 />";
    }
  ?>
于 2012-04-09T10:44:20.183 回答
2

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

$odd = FALSE;
foreach ($x as $value)
{
    $odd = !$odd;
    if($odd){
        continue;
    }

    echo $value . "<br />";
}

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

于 2012-04-09T10:43:23.847 回答
1
$cnt = 0;
foreach ($x as $value)
{
  $cnt++;
  if ($cnt % 2 == 1) continue;
  echo $value . "<br />";
}

我想为@GordonM 带来这个
for在假设数组按顺序索引顺序时才有效,
例如

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

会把你拖下地狱

于 2012-04-09T10:42:50.713 回答
1

也许这就是你想要的。

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

问候!

于 2012-04-09T10:43:25.963 回答
0
<?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++;
  }
?>
于 2012-04-09T12:09:09.060 回答