在php中,将字符串“123”转化为整型的最佳方法是什么? 将字符串"hello"转化为整型会产生什么错误呢?
我们可以使用intval()函数将字符串转换为整型,也可以使用int强制转化。那么二者之间,谁的效率更高呢?
我刚刚设置了一个快速的基准测试练习:
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()的速度要慢2.5倍,如果输入已经是整数,则差异最大。
我有兴趣知道为什么。
更新:我再次运行测试,这次是强制 (0 + $var)
| 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)
使用PHP 5.3.1进行测试
继续阅读与本文标签相同的文章
上一篇 :
为什么85%的大数据项目总是失败?
下一篇 :
Apache 回应:参与开源不受 EAR 约束
-
Robotframework-RED-指定测试报告存放的路径
2026-05-15栏目: 教程
-
株洲首个数据中心站投运
2026-05-15栏目: 教程
-
微软Edge新标签页迎来新布局:新闻区可替换为工作相关内容
2026-05-15栏目: 教程
-
取快递件竟有BUG!这是恶意为之?双十一得好好注意了
2026-05-15栏目: 教程
-
“缺芯少屏”现状或将改善,静电消除及洁净室工程需求增长
2026-05-15栏目: 教程
