Есть ли лучший способ сделать это?
if( $_POST['id'] != (integer)$_POST['id'] )
echo 'not a integer';
Я пробовал
if( !is_int($_POST['id']) )
Но is_int()
по какой-то причине не работает.
Моя форма выглядит как
<form method="post">
<input type="text" name="id">
</form>
Я исследовал is_int()
, и кажется, что если
is_int('23'); // would return false (not what I want)
is_int(23); // would return true
Я также пробовал is_numeric()
is_numeric('23'); // return true
is_numeric(23); // return true
is_numeric('23.3'); // also returns true (not what I want)
кажется, что единственный способ сделать это: [это плохо, не делайте этого, см. примечание ниже)
if( '23' == (integer)'23' ) // return true
if( 23 == (integer)23 ) // return true
if( 23.3 == (integer)23.3 ) // return false
if( '23.3' == (integer)'23.3') // return false
Но есть ли функция, чтобы сделать выше?
Чтобы уточнить, мне нужны следующие результаты
23 // return true
'23' // return true
22.3 // return false
'23.3' // return false
Примечание. Я только что понял, что мое предыдущее решение, которое я представил, вернет true для всех строк. (спасибо redreggae)
$var = 'hello';
if( $var != (integer)$var )
echo 'not a integer';
// will return true! So this doesn't work either.
Это не дубликат Проверка, является ли переменная целой в PHP, потому что мои требования/определения целого отличаются от theres.