perche tutti i dati iviati da un form sono stringhe, se in un campo text scrivi 1 la variabile che ti arriva e' "1" e non 1. La funzione is_int() ti dice se la variabile e' un intero, non se la stringa contiene un intero.

da php.net

Descrizione
bool is_int ( mixed var )

Verifica che la variabile data sia di tipo integer

Nota: Per verificare se una variabile è un numero oppure una stringa numerica (come le variabili dei form, che sono sempre stringhe) occorre usare la funzione is_numeric().
dal sito dicono di usare is_numeric(), controllerei e poi la tasformerei in numero con intval()