foreach a indexy pole

Mám takový nepochopitelný problém. Mohl by mi někdo říct, za jakých okolností vypíše foreach pole (v pořadí indexy) 1,0,2,3,4.... ? Už se mi to stalo na dvou úplně odlišných místech a je to pro mě záhada, protože jsem řil v domnění, že foreach musí vždycky vypisvat 0,1,2,3,4....
$array = Array(1=>"1","0","2","3","4");
echo"$array[1]";
echo"$array[2]";
echo"$array[3]";
echo"$array[4]";

vypiše 1023