PHP foreach迭代两次而不是一次

PHP foreach迭代两次而不是一次,php,Php,我对php中的foreach函数有一个问题: 目前我有: <html> <body> <?php $x=array("one","two","three", "four", "five", "six", "seven", "eight"); foreach ($x as $value) { echo $value . "<br />"; } ?> 但是如何使foreach循环迭代两次而不是一次,从而得到: two four

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

目前我有:

<html>
<body>

<?php

$x=array("one","two","three", "four", "five", "six", "seven", "eight"); 

foreach ($x as $value)
  {
    echo $value . "<br />";
  }
?>
但是如何使foreach循环迭代两次而不是一次,从而得到:

two
four 
six 
eight
这可能吗?还是只使用for循环更好


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

您的意思是要跳过其他条目吗?您应该只使用for循环:

for($i = 1; $i < count($x); $i += 2)
{
    echo $x[$i] . '<br />';
}
用于($i=1;$i;
}
如果“迭代两次”的意思是“跳过奇数项”,则会将您拖入地狱

$odd=FALSE;
外汇($x为$value)
{
$odd=!$odd;
若有($奇数){
持续
}
回显$value.“
”; }

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

也许这就是你想要的

$t=count($x);
for($i=0;$i<$t;$i++){
   if($i%2==0 && $i>0){
      echo $x[$i]."<br>";
   }
}
$t=计数($x);
对于($i=0;$i0){
回声$x[$i]。“
”; } }
问候


<?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 />";
    }
  ?>


在第一次输出后,这肯定会卡住吗
$i
将变为2,然后在继续之后,
$i++
将永远不会增加?Nick,谢谢你指出错误,我已经编辑了答案为什么你要这样做而不是使用
for
循环?对我来说似乎真的很浪费。这只是一个工具,你可以随意使用。foreach不适合执行基于位置的操作,for不适合循环关联数组。为什么要这样做而不是使用
for
循环?对我来说似乎真的很浪费。是的,但是OP的例子是基于一个统一索引的数组。在处理无序数组或关联数组(OP没有询问)时,您可以只执行
array\u值
而{(each($array))&&($data=each($array)){}
.OP实际上要求foreach解决方案。如前所述,假设顺序索引数组不理想。建议使用
for
,并将增量2改为
foreach
 array(2=>'one', 1=>'two', 4=>'three' ...)
$odd = FALSE;
foreach ($x as $value)
{
    $odd = !$odd;
    if($odd){
        continue;
    }

    echo $value . "<br />";
}
$t=count($x);
for($i=0;$i<$t;$i++){
   if($i%2==0 && $i>0){
      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 />";
    }
  ?>
<?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++;
  }
?>