PHP foreach迭代两次而不是一次

时间:2012-04-09 10:39:16

标签: php

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

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

6 个答案:

答案 0 :(得分:4)

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

for($i = 1; $i < count($x); $i += 2)
{
    echo $x[$i] . '<br />';
}

答案 1 :(得分: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 />";
    }
  ?>

答案 2 :(得分:2)

如果通过&#34;迭代两次&#34;你的意思是&#34;跳过奇数条目&#34;:

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

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

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

答案 3 :(得分: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' ...)

会把你拖到地狱

答案 4 :(得分:1)

也许这就是你想要的。

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

问候!

答案 5 :(得分: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++;
  }
?>