发布日期:2018-03-26
在PHP中将字符串转为整型的最快方法+ 查看更多
在PHP中将字符串转为整型的最快方法
+ 查看更多
发布日期:2017-05-03 15:54
分类:PHP
浏览次数:182
为什么这个特定方法最快?如果出现了错误输入会怎样,比如输入一个字符串“hello”或者一个数组?
最佳答案:
$result = 0+$input; //这是最快的办法!下面是测试过程。
我来列出一组测试
Function time to run 1 million iterations -------------------------------------------- (int) "123": 0.55029 intval("123"): 1.0115 (183%) (int) "0": 0.42461 intval("0"): 0.95683 (225%) (int) int: 0.1502 intval(int): 0.65716 (438%) (int) array("a", "b"): 0.91264 intval(array("a", "b")): 1.47681 (162%) (int) "hello": 0.42208 intval("hello"): 0.93678 (222%)
平均下来,调用intval()函数速度慢两倍多,当你输入的已经是一个整型的时候区别最明显。
不过我也很想知道为什么会快。
更新:我又用这个例子测试了一次,这次用了强制转换。
| INPUT ($x) | (int) $x |intval($x) | 0 + $x | |-----------------|------------|-----------|-----------| | "123" | 0.51541 | 0.96924 | 0.33828 | | "0" | 0.42723 | 0.97418 | 0.31353 | | 123 | 0.15011 | 0.61690 | 0.15452 | | array("a", "b") | 0.8893 | 1.45109 | err! | | "hello" | 0.42618 | 0.88803 | 0.1691 | |-----------------|------------|-----------|-----------|
补充:我试了一下非法操作,这些操作当你使用这个函数是应该注意
$x = "11"; (int) $x; // int(11) intval($x); // int(11) $x + 0; // int(11) $x = "0x11"; (int) $x; // int(0) intval($x); // int(0) $x + 0; // int(17) ! $x = "011"; (int) $x; // int(11) intval($x); // int(11) $x + 0; // int(11) (not 9)