<?php
$prices = array( 'Tires'=>100 );
$prices[ 'Oil' ] = 10;
$prices[ 'Spark plugs' ] = 4;
echo $prices['Oil'].'<br />';
foreach ($prices as $key => $value) {
echo $key.' - '.$value.'<br />';
}
while($element = each($prices)){
echo $element[ 'key' ];
echo ' - ';
echo $element[ 'value' ];
echo '<br />';
}
?>
注釋掉兩種輸出方式中的任何一個,另一個都可以正常輸出;
但是把它們放在一起後,卻只能輸出其中一個。
然而, 我把兩種輸出方式的順序調轉後,發現兩個都可以輸出。
請問,何解?
OK,我想明白了。這和foreach的原理有關。
foreach每執行一次,數組內部的指針後移一步,待輸出完畢後,指針已經指向'\0'元素了。
因此隨後的while(each)不會輸出任何結果,因為它相當於在讀取一個空數組。
解決的方法是reset($prices),使數組的指針指向首元素,然後執行第二種輸出方法。
還是感謝親的回答!