Массивы PHP как целочисленные, так и строковые. Вы даже можете смешать их:
array('red', 'green', 'white', 'color3'=>'blue', 3=>'yellow');
Что вы хотите, чтобы индекс был для значения 'blue'
? Это 3? Но на самом деле это индекс значения 'yellow'
, так что это будет двусмысленность.
Другое решение для вас - привести массив к целочисленному списку значений.
foreach (array_values($array) as $i => $value) {
echo "$i: $value\n";
}
Выход:
0: red
1: green
2: white
3: blue
4: yellow