我发现在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循环不会遍历项目。为什么呢?
答案 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
),你不会有这个问题。