Te sucede porque la forma que usas para recorrer el Array (ese list() con each() en un bucle while) deja el "puntero" interno del array "Al final" cuando termina ese bucle .. Por eso, cuando quieres leer otra vez el array .. no puede leer nada pues está el puntero del array al final ..
Para llevar el puntero al principio del array debes usar: (despues de cada llamada de tu bucle que recorre el array )
Código PHP:
reset($myArraymeses);
...
Si usas un bucle tipo foreach() para recorrer el un array no es neceario que uses "reset()" pues lo hace automáticamente ademas q el ejemplo que pusistes se resume en un par de líneas de codigo .. usando simplemente:
Código PHP:
<?
$mes_i = "Abr";
$myArraymeses=array(1=>'Ene','Feb','Mar','Abr');
$mes_numero=array_keys($myArraymeses,$mes_i);
echo $mes_numero[0];
?>
array_keys() busca el indice del elemento que digas .. La salida (lo que entrega es un array .. he de ahé el $mes_numero[0] q es donde tenemos nuestro resultado ..)
Como veras tambien, inicializo el indice (key) del array en 1 (con 1=> .. ) así no he de ir sumando +1 al resultado que tenga ..
Un saludo,