>当我想获取字符串的几位时
$str = 'abcd' ;
大多数人使用 substr ( $str, 0, 2 ) ;
为什么不呢 $prefix = $str[0] . $str[1] ;
运行这两个函数 100.000 次以获得合理可接受的测量值:
<?php
$str = 'abcd';
$before = microtime(true);
for ($i=0 ; $i<100000 ; $i++) {
substr($str, 0, 2);
}
$after = microtime(true);
echo ($after-$before)/$i . " sec/substrn";
$before = microtime(true);
for ($i=0 ; $i<100000 ; $i++) {
$str[0] . $str[1] ;
}
$after = microtime(true);
echo ($after-$before)/$i . " sec/concatenaten";
?>
生成以下结果:
4.8739910125732E-8秒/秒
5.666971206665E-8 秒/连接
多次运行它的平均差异在 0.3 到 0.6 秒之间,其中substr()
比串联快。我想这与以下事实有关:substr()
只需要一个操作,而$str[0] . $str[1]
需要 3 个操作(获取值和连接本身(。我怀疑差异会根据所需的操作量而增加。
怎么样? :D
echo implode(" ", $Arrayofstrings );
要查看更快的方法,只需搜索基准测试:
赢家是substr
,这是这种操作最快的功能。
测试: substr($var, 5, 1( vs. isset && {5}
完整的测试菜单
PHP 5
substr
比连接器慢,如果你想要最快的执行方法,它是
"$str[0]$str[1]"
菲律宾比索 7
优化了 PHP7 中的 JIT 和调用转换,因此调用 substr
比 PHP5 中快得多