is_numeric,intval,ctype__digit ..你能依靠它们吗?
还是我必须使用正则表达式?
function isNum($str) {
return (preg_match("/^[0-9]+$/", $str));
}
你们有什么感想?我是傻瓜吗?
mmr*_*151 13
ctype_digit和之间的一个重要区别is_numerict是负值和浮点数.
is_numeric(-10)将返回,true而'ctype_digit(-10)'将是false
也ctype_digit(12.50)将返回false,而
is_numeric(12.50)将true
所以它们都很方便,取决于你的域逻辑的上下文.
Kev*_*ney 12
is_numeric,intval和ctype_digit都做了很多不同的事情.
is_numeric将告诉您变量的内容是否为数字(即如果它是浮点或整数值,则为true).
intval尝试将一串数字转换为整数值
ctype_digit将告诉您字符串是否只包含数字字符(将执行与isNum函数相同的检查).
最好的方法可能是检查is_numeric是否为真,然后使用settype($ myvalue,'integer')或intval($ myvalue)行的东西;
您命名了两种函数:
一个验证检查,如果给定值具有给定的特点,并返回要么真或假。
is_numeric,ctype_*函数和您的isNum函数正在验证函数,因为它们只是告诉您一个值是否有效。
一个过滤器改变,新的价值具有给定的特征,因此将这样的方式给定值有效。
intval并且这些filter_*函数是过滤函数,因为它们总是会返回通过验证器的有效值。
我不是 PHP 专家,但是您是否考虑过编写数据驱动的单元测试来具体了解这些函数。如果您不确定它们的可靠性并且文档也不清楚,那么没有什么比可以测试 1000 个排列及其预期输出的单元测试更好的了。
您实际上甚至不必像我想象的那样走得那么远,您只想测试一些特殊的边缘情况。您的编程技能和编译器是您最好的朋友。您编写的程序将证实或否认您的怀疑。
此外,为了获得额外的好处,您可以监控每种方法需要多长时间,看看哪种方法性能更好。
只是一个想法。
| 归档时间: |
|
| 查看次数: |
7956 次 |
| 最近记录: |