是否php的is_int函数返回false
为负数,因为php中的整数是无符号的,还是有其他的行为,我错过了?我试图检查某个东西是否是一个整数,如果它正在做一些不同的事情,我不想依赖于is_int的行为(对于测试的第一部分)。
澄清:我知道is_int
返回false
为负数,但我问为什么因为这种行为:var_dump(intval("-10"))
打印int(-10)
, var_dump(intval("10"))
打印int(1)
,所以负值和正值都被认为是整数,但is_int("-10")
返回false。
编辑:好的,对不起大家,我对is_int和整数的行为感到相当困惑。当我需要的是字符串上的is_numeric
或整数本身上的is_int
时,我正在考虑它对内容为"-10"的字符串起作用。谢谢你的帮助。
没有:
var_dump( is_int(-10) ); // bool(true)
可能,它不是一个可以开头的数字:
var_dump( is_int('-10') ); // bool(false)
如果是,试试is_numeric(),它是为字符串设计的。
为什么不亲自测试一下呢?
<?php
var_dump(is_int(-1));
var_dump(is_int('-1'));
生产:
bool(true)
bool(false)
use
is_int(-10)
不is_int("-10")
我知道这个问题很老了,但是如果有人需要检查字符串是否代表一个有效的int,或者,例如,一个浮点数,这里是一个简单的脚本,将使验证
$is_int = (is_int($val))||(((int)$val)&&(((int)$val)==((float)$val)&&((string)$val==$val))||$val==='0');
它作为一个检查。首先,简单的is_int()函数,然后,它检查是否有非零值,如果int转换等于它的浮点数,最后,如果字符串字面上是"0"。
<?php
$val = 3;
$is_int = (is_int($val))||(((int)$val)&&(((int)$val)==((float)$val)&&((string)$val==$val))||$val==='0');
var_dump($is_int);
$val = 5.5;
$is_int = (is_int($val))||(((int)$val)&&(((int)$val)==((float)$val)&&((string)$val==$val))||$val==='0');
var_dump($is_int);
$val = 'hola';
$is_int = (is_int($val))||(((int)$val)&&(((int)$val)==((float)$val)&&((string)$val==$val))||$val==='0');
var_dump($is_int);
$val = '3';
$is_int = (is_int($val))||(((int)$val)&&(((int)$val)==((float)$val)&&((string)$val==$val))||$val==='0');
var_dump($is_int);
$val = '5.5';
$is_int = (is_int($val))||(((int)$val)&&(((int)$val)==((float)$val)&&((string)$val==$val))||$val==='0');
var_dump($is_int);
$val = '0';
$is_int = (is_int($val))||(((int)$val)&&(((int)$val)==((float)$val)&&((string)$val==$val))||$val==='0');
var_dump($is_int);
$val = 0;
$is_int = (is_int($val))||(((int)$val)&&(((int)$val)==((float)$val)&&((string)$val==$val))||$val==='0');
var_dump($is_int);
//bool(true) bool(false) bool(false) bool(true) bool(false) bool(true) bool(true)