使用PHP,将“123”这样的字符串转换为整数的最快方法是什么?
为什么这种方法是最快的?如果它得到意外的输入,比如“hello”或数组,会发生什么?
使用PHP,将“123”这样的字符串转换为整数的最快方法是什么?
为什么这种方法是最快的?如果它得到意外的输入,比如“hello”或数组,会发生什么?
当前回答
我个人觉得选角是最漂亮的。
$iSomeVar = (int) $sSomeOtherVar;
如果发送了'Hello'这样的字符串,它将被转换为整数0。对于'22 years old'这样的字符串,它将被转换为整数22。任何不能解析为数字的都变成0。
如果你真的需要速度,我想这里的其他建议是正确的,假设强制是最快的。
其他回答
从任意字符串中提取的整数
$in = 'tel.123-12-33';
preg_match_all('!\d+!', $in, $matches);
$out = (int)implode('', $matches[0]);
/ /美元= ' 1231233 ';
运行了一个基准测试,结果表明(使用所有可用的方法)获得实整数的最快方法是
$foo = (int)+"12.345";
只是用
$foo = +"12.345";
返回一个浮点数。
我个人觉得选角是最漂亮的。
$iSomeVar = (int) $sSomeOtherVar;
如果发送了'Hello'这样的字符串,它将被转换为整数0。对于'22 years old'这样的字符串,它将被转换为整数22。任何不能解析为数字的都变成0。
如果你真的需要速度,我想这里的其他建议是正确的,假设强制是最快的。
$int = settype("100", "integer"); //convert the numeric string to int
更多特别的基准测试结果:
$ time php -r 'for ($x = 0;$x < 999999999; $x++){$i = (integer) "-11";}'
real 2m10.397s
user 2m10.220s
sys 0m0.025s
$ time php -r 'for ($x = 0;$x < 999999999; $x++){$i += "-11";}'
real 2m1.724s
user 2m1.635s
sys 0m0.009s
$ time php -r 'for ($x = 0;$x < 999999999; $x++){$i = + "-11";}'
real 1m21.000s
user 1m20.964s
sys 0m0.007s