为了账号安全,请及时绑定邮箱和手机立即绑定

在PHP中将字符串转换为整数的最快方法

在PHP中将字符串转换为整数的最快方法

PHP
暮色呼如 2019-12-09 15:20:39
使用PHP,将这样的字符串转换为"123"整数的最快方法是什么?为什么该特定方法最快?如果它收到意外的输入(例如"hello"或数组)会怎样?
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

我刚刚进行了快速基准测试:


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()的速度要慢两倍半,并且如果您的输入已经是整数,则相差最大。


我想知道为什么。


更新:我再次使用强制性进行测试 (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测试


查看完整回答
反对 回复 2019-12-09
?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我个人觉得演员是最漂亮的。


$iSomeVar = (int) $sSomeOtherVar;

如果发送类似“ Hello”的字符串,则将其强制转换为整数0。对于诸如“ 22岁”的字符串,将其强制转换为整数22。它无法解析为数字的任何值都将变为0。


如果您确实需要速度,我想这里的其他建议都是正确的,假设强制是最快的。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 482 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信