我发现在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循环不迭代项。为什么?
foreach()
完成后,$p2上的内部"当前位置"指示器位于数组的END。您需要reset()
该指针,以便while()循环再次从开头开始。例如
foreach($p2 as $item => $desc) {
....
}
reset($p2); // <--you need this
while(list(...) = ...) {
...
}
每次foreach()数组时,foreach()
都会隐式地为您重置,所以如果您的代码是相反的(while
循环,然后是foreach
),您就不会有这个问题。