欢迎各位兄弟 发布技术文章
这里的技术是共享的
is_object(); //判断是否为对象
来自 http://blog.csdn.net/u014552756/article/details/50295119
由于PHP属于弱类型语言, 所以在变量类型上有优势, 也有自然有麻烦的地方。比如,如何判断一个变量是否为整型,这就是个很容易忽视的问题,虽然容易~~~
先给出我的办法:
public static function isInteger( $value ) {
return is_numeric($value) && is_int($value+0);
}
先说一下“is_numeric”, 他是用来检查一个变量是不是一个数字,
但是, 他不检查是不是整数。
例如:
<?php$tests = array(
"42",1337,0x539,02471,0b10100111001,
1337e0,"not numeric",array(),9.1);
foreach ($tests as $element) {
if (is_numeric($element)) {
echo "'{$element}' is numeric", PHP_EOL;
} else {
echo "'{$element}' is NOT numeric", PHP_EOL;
}
}
?>
其运行结果如下:
'42' is numeric
'1337' is numeric
'1337' is numeric
'1337' is numeric
'1337' is numeric
'1337' is numeric
'not numeric' is NOT numeric
'Array' is NOT numeric
'9.1' is numeric
is_int 用来检查变量是不是整数, 这里, 如果变量是字符串, 将会返回false。
例如:
var_dump(is_int(23)); //bool(true)
var_dump(is_int("23")); //bool(false)
var_dump(is_int(23.5)); //bool(false)
var_dump(is_int(NULL)); //bool(false)
var_dump(is_int("")); //bool(false)
is_float — 检测变量是否是浮点型
http://cn.php.net/manual/zh/function.is-float.php
is_int — 检测变量是否是整数
http://cn.php.net/manual/zh/function.is-int.php
1 2 3 4 5 6 7 | $a = 12345; $b = 123.45; var_dump( is_float ( $a )); //false; var_dump( is_int ( $a )); //true; var_dump( is_float ( $b )); //true; var_dump( is_int ( $b )); //false; |
is_numeric — 检测变量是否为数字或数字字符
<?php $tests = array( "31", 1380, "1e4", "not numeric", array(), 9.1 ); foreach ($tests as $element) { if (is_numeric($element)) { echo "'{$element}' is numeric", PHP_EOL; } else { echo "'{$element}' is NOT numeric", PHP_EOL; } } ?>
程序运行结果:
'31' is numeric '1380' is numeric '1e4' is numeric 'not numeric' is NOT numeric 'Array' is NOT numeric '9.1' is numeric
字符串 1e4 也被判定为数字了。
is_numeric函数不只支持10进制的数字,也支持16进制类型数字。所以在使用中验证纯自然数字如QQ号码这样的数字串,要配合 intval()整型化函数。
<?php $id = 0xff33669f; if (is_numeric($id)) echo $id, '符合要求。';//output 4281558687符合要求。 else echo $id, '不符合要求。'; ?>
如果需要判断整数,可以使用 is_int()函数,以免发生一些字符串也当成是合法数字的情况。
is_numeric能判定一个变量是否为数字或数字字符串,但是它的判定范围太宽了。整数、小数、指数表示以及16进制数值都会通过判断。 平时判定id的时候,用它就有点不合适。今天发现一个新的判定函数:ctype_digit,它可以只判定整数,这样就比is_numeric好一些。其他还有ctype_xdigit判定16进制整数,ctype_alpha判定字母等等函数。