PHP foreach повторяется дважды, а не один раз

У меня есть вопрос относительно функции foreach в php:

На данный момент у меня есть:

<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++; } ?>