使用PHP,将这样的字符串转换为"123"
整数的最快方法是什么?
为什么该特定方法最快?如果它收到意外的输入(例如"hello"
或数组)会怎样?
我刚刚进行了快速基准测试:
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测试
问题内容: 有没有一种方法可以将整数转换为PHP中的字符串? 问题答案: 您可以使用该函数将数字转换为字符串。 从维护的角度来看,它显然是您正在尝试做的事情,而不是其他一些更深奥的答案。当然,这取决于您的上下文。
我想有一个JPQL查询,它可能看起来像: 其中a.num是一个整数。我想将此转换为字符串以使用类似的条件。然而,上述转换在JPQL中不起作用。我该如何实现这一点?
问题内容: 这是我从文本文件中读取的一行: 我使用readline()以字符串形式读取它。现在,将其转换回数组的最快方法是什么? 谢谢! 问题答案: 我不确定这是最快的,但绝对是最安全/最简单的: 常规也可以工作: 我的机器的一些基本计时: 因此,根据我的计算机,速度比快50%。但是,这绝对是不安全的,除非您完全信任它,否则切勿在任何字符串上使用它。除非这是一个真正的演示瓶颈,并且您100%相信输
如何将字符串值转换为整数,并将转换后的值乘以整数,这样我就可以得到300.00的结果。见下面的例子- 如果我像这样编码,那么我就会出错-
问题内容: 如何在JavaScript中将字符串转换为整数? 问题答案: 最简单的方法是使用本机函数: 如果这对您不起作用,则有 parseInt , 一元加号 , 带有floor的parseFloat 和 Math.round 方法。 parseInt: 一元加号,如果您的字符串已经是整数形式: 如果您的字符串是浮点数或可能是浮点数,并且您想要一个整数: 或者,如果您要多次使用Math.floo
问题内容: 有什么方法可以将null转换为Integer。null实际上是一个字符串,我在我的服务层中传递该字符串,将其接受为整数。因此,每当我尝试将null字符串强制转换为Integer时,都会引发异常。但是我必须将null转换为Integer。 问题答案: 您 不能 从String强制转换为Integer。但是,如果您尝试将字符串转换为整数,并且必须提供处理字符串的实现,请查看以下代码片段: