Как правильно проверить, является ли переменная числом в PHP? - PullRequest
3 голосов
/ 07 декабря 2011

Когда я выбираю данные из базы данных, результатом является строка, даже если она имеет числовое значение. Вот что я имею в виду:

// An integer
$int=10;
if(is_int($int)) // Returns true
...

// A string
$int='10';
if(is_int($int)) // Returns false
...

Я хочу, чтобы оба из них вернули true.

Ответы [ 6 ]

5 голосов
/ 07 декабря 2011

Используйте is_numeric(), если хотите, чтобы он принимал значения с плавающей запятой, и ctype_digit() только для целых чисел.

2 голосов
/ 07 декабря 2011

Вы ищете is_numeric ().

http://php.net/is_numeric

1 голос
/ 07 декабря 2011

Нельзя заключить переменную в кавычку (одинарную или двойную кавычку),
все, что заключено в кавычку, будет считаться строкой

см .: - http://php.net/manual/en/language.types.string.php

Все возвращаетсяпо базе данных (предположим, что mysql) всегда STRING,
для вашего случая, это будет NUMERIC STRING
функция is_numeric (как и все остальные упомянутое) является правильным путем

is_numeric - определяет, является ли переменная числом или числовой строкой

0 голосов
/ 26 сентября 2013
function is_number($s){
    return in_array(str_replace(str_split('0123456789'), '', $s), array(',','.',''));
}
0 голосов
/ 07 декабря 2011

Приведите вашу переменную к нужному вам типу.

Разрешены следующие броски:

  • (int), (integer) - приведение к целому числу
  • (bool), (булево) - приведение к булеву
  • (float), (double), (real) - приведение к плаванию
  • (строка) - приведение к строке
  • (массив) - приведение к массиву
  • (объект) - приведение к объекту
  • (не установлено) - приведение к NULL (PHP 5)

Код:

<?

header( 'content-type: text/plain' );
$var = '10.1';

var_dump( (int)$var );
var_dump( (bool)$var );
var_dump( (float)$var );
var_dump( (string)$var );
var_dump( (array)$var );
var_dump( (object)$var );
var_dump( (unset)$var );

Выход:

int(10)
bool(true)
float(10.1)
string(4) "10.1"
array(1) {
  [0]=>
  string(4) "10.1"
}
object(stdClass)#1 (1) {
  ["scalar"]=>
  string(4) "10.1"
}
NULL
0 голосов
/ 07 декабря 2011

Я немного взломан, но может быть более убедительным способом проверить, соответствует ли значение "целочисленному шаблону".Под этим я подразумеваю, что он может / не может быть приведен явно к целому числу, но он имеет все составляющие одного.встает)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...