Esto es porque ctype_digit, solo funciona con strings, si quieres checar el key de tu array castealo a string:
Código php:
Ver original$array = array(0=>"Gato",1=>"Perro",2=>"Oso");
foreach ($array AS $key => $value){
if(!ctype_digit((string
) $key)){ echo "$key no es número"; }
}
Saludos.