当我从数据库中获取数据时,结果是一个字符串,即使它有一个数字值。我的意思是:
// An integer
$int=10;
if(is_int($int)) // Returns true
...
// A string
$int='10';
if(is_int($int)) // Returns false
...
我希望这两个都返回 true。
如果您希望它接受浮点值,请使用is_numeric()
,并且仅对整数ctype_digit()
。
你正在寻找 is_numeric((。
http://php.net/is_numeric
不能用引号(单引号或双引号(将变量括起来,
用引号括起来的任何内容都将被视为字符串
请参阅:- http://php.net/manual/en/language.types.string.php
数据库返回的所有内容(假设是 mysql(始终是 STRING,
对于您的情况,它将是一个数字字符串
功能is_numeric(如其他人所提到的(是正确的方法
is_numeric — 查找变量是数字还是数字字符串
我有点黑客,但可能是检查值是否"与整数模式匹配"的更有力的方法。我的意思是它可能/可能不会显式转换为整数,但它具有一个整数的所有特征。
function isInt($i){
return (is_numeric($i) // number, but not necessarily an integer
&& (int)$i == $i); // when cast it's still the same "number"
}
示例(尝试自己的输入,看看它是如何站起来的(
将变量强制转换为所需的类型。
允许的演员表是:
- (
- 整数(、(整数( - 转换为整数 (
- 布尔值(、(布尔值(- 转换为布尔值 (
- 浮点(、(双(、(真实(- 投射到浮点
- (字符串( - 强制转换为字符串
- (数组( - 强制转换为阵列
- (对象( - 投射到对象
- (未设置( - 强制转换为空 (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
function is_number($s){
return in_array(str_replace(str_split('0123456789'), '', $s), array(',','.',''));
}