Джонатан прав. PHP-массивы действуют как таблица сопоставления ключей для значений. в некоторых случаях вы можете получить индекс, если ваш массив определен, например
$var = array(2,5);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
Ваш вывод будет
2
5
, в этом случае каждый элемент в массиве имеет понятный индекс, но если вы затем выполните что-то вроде следующего:
$var = array_push($var,10);
for ($i = 0; $i < count($var); $i++) {
echo $var[$i]."\n";
}
вы не получите вывод. Это происходит потому, что массивы в PHP не являются линейными структурами, как в большинстве языков. Они больше похожи на хеш-таблицы, которые могут иметь или не иметь ключи для всех сохраненных значений. Следовательно, foreach не использует индексы для обхода, потому что они имеют индекс, только если массив определен. Если вам нужен индекс, убедитесь, что ваши массивы полностью определены, прежде чем переходить по ним, и используйте цикл for.