我的PHP foreach代码无法正常工作

时间:2013-07-21 21:59:15

标签: php arrays foreach while-loop

我发现在PHP中我可以使用两种类型的foreach。

以下是代码:

$p2 = array('copier' => "Copier & Multipurpose",  
    'inkjet' => "Inkjet Printer",            
    'laser' => "Laser Printer",              
    'photo' => "Photographic Paper");

echo "p2 element: " . $p2['inkjet'] . "<br>";

foreach ($p2 as $item => $desc)          
{                                           
    echo "$item -> $desc <br />";
}

echo "<br />";

while (list($item, $desc) = each($p2))              
{
    echo "$item -> $desc <br />";
}  

第二个while循环不会遍历项目。为什么呢?

1 个答案:

答案 0 :(得分:2)

完成第一个foreach()后,$ p2上的内部“当前位置”指示符位于数组的END处。你需要reset()那个指针,所以while()循环再次从头开始。 e.g。

foreach($p2 as $item => $desc) {
    ....
}
reset($p2);  // <--you need this
while(list(...) = ...) {
 ...
}
每次foreach()数组时,

foreach()都会隐式重置,所以如果你的代码是相反的(while循环,那么foreach),你不会有这个问题。