基本上我在PHP中有一个foreach循环,我想:
foreach( $x as $y => $z )
// Do some stuff
// Get the next values of y,z in the loop
// Do some more stuff
答案 0 :(得分:7)
在foreach
中进行操作是不切实际的。
对于非关联数组,请使用for
:
for ($x = 0; $x < count($y); $x++)
{
echo $y[$x]; // The current element
if (array_key_exists($x+1, $y))
echo $y[$x+1]; // The next element
if (array_key_exists($x+2, $y))
echo $y[$x+2]; // The element after next
}
对于关联数组,它有点棘手。这应该有效:
$keys = array_keys($y); // Get all the keys of $y as an array
for ($x = 0; $x < count($keys); $x++)
{
echo $y[$keys[$x]]; // The current element
if (array_key_exists($x+1, $keys))
echo $y[$keys[$x+1]]; // The next element
if (array_key_exists($x+2, $keys))
echo $y[$keys[$x+2]]; // The element after next
}
访问下一个元素时,请确保它们存在!
答案 1 :(得分:1)
使用continue
关键字跳过此循环的其余部分并跳回到开头。
答案 2 :(得分:1)
不确定你是否只想用第一个元素做“一些东西”,只用最后一个元素做“更多的东西”,并且每个其他元素都要做“一些东西”和“更多东西”。或者如果你想用第一,第三,第五元素做“某些东西”,用第二,第四,第六元素做“更多东西”等。
$i = 0;
foreach( $x as $y => $z )
if (($i % 2) == 0) {
// Do some stuff
} else {
// Do some more stuff
}
$i++;
}
答案 3 :(得分:1)
好的,继续我对Pekka解决方案的评论,这里考虑到数组可能是关联的事实。它不漂亮,但它的工作原理。欢迎提出如何改善这一点的建议!
<?php
$y = array(
'1'=>'Hello ',
'3'=>'World ',
'5'=>'Break? ',
'9'=>'Yup. '
);
$keys = array_keys($y);
$count = count($y);
for ($i = 0; $i < $count; $i++) {
// Current element
$index = $keys[$i];
echo "Current: ".$y[$index]; // The current element
if (array_key_exists($i+1, $keys)) {
$index2 = $keys[$i+1];
echo "Next: ".$y[$index2]; // The next element
}
if (array_key_exists($i+2, $keys)) {
$index3 = $keys[$i+2];
echo "Nextnext: ".$y[$index3]; // The element after next
}
}
?>
答案 4 :(得分:0)
for ($i=0, $i<count($x); $i++)
{
// do stuff with $x[$i]
// do stuff with $x[$i+1], unless you're on the last element of the array
}
答案 5 :(得分:0)
reset($arr);
while(list($firstindex,$firstvalue) = each($arr)){
list($secondindex,$secondvalue) = each($arr);
//do something with first & second.
}