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

使用PHP,将这样的字符串转换为"123"整数的最快方法是什么?

为什么该特定方法最快?如果它收到意外的输入(例如"hello"或数组)会怎样?


暮色呼如
浏览 484回答 3
3回答

繁花如伊

我刚刚进行了快速基准测试:Function             time to run 1 million iterations--------------------------------------------(int) "123":                0.55029intval("123"):              1.0115  (183%)(int) "0":                  0.42461intval("0"):                0.95683 (225%)(int) int:                  0.1502intval(int):                0.65716 (438%)(int) array("a", "b"):      0.91264intval(array("a", "b")):    1.47681 (162%)(int) "hello":              0.42208intval("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测试

慕标琳琳

我个人觉得演员是最漂亮的。$iSomeVar = (int) $sSomeOtherVar;如果发送类似“ Hello”的字符串,则将其强制转换为整数0。对于诸如“ 22岁”的字符串,将其强制转换为整数22。它无法解析为数字的任何值都将变为0。如果您确实需要速度,我想这里的其他建议都是正确的,假设强制是最快的。
打开App,查看更多内容
随时随地看视频慕课网APP