Jonathan tiene razón. Las matrices PHP actúan como una tabla de asignación que asigna claves a valores. en algunos casos puede obtener un índice si su matriz está definida, como
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
su salida será
2
5
en cuyo caso cada elemento de la matriz tiene un índice que se puede conocer, pero si hace algo como lo siguiente
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
no obtienes salida. Esto sucede porque las matrices en PHP no son estructuras lineales como lo son en la mayoría de los lenguajes. Son más como tablas hash que pueden o no tener claves para todos los valores almacenados. Por lo tanto, foreach no usa índices para rastrearlos porque solo tienen un índice si la matriz está definida. Si necesita tener un índice, asegúrese de que sus matrices estén completamente definidas antes de rastrearlas y use un bucle for.