当我想获取字符串的一些位子
$str = 'abcd' ;
大多数人使用
substr ( $str, 0, 2 ) ;
为什么不
$prefix = $str[0] . $str[1] ;
答案 0 :(得分:2)
同时运行两个功能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/substr\n";
$before = microtime(true);
for ($i=0 ; $i<100000 ; $i++) {
$str[0] . $str[1] ;
}
$after = microtime(true);
echo ($after-$before)/$i . " sec/concatenate\n";
?>
产生以下结果:
4.8739910125732E-8秒/ substr
5.666971206665E-8秒/连接
多次运行它会产生平均0.3到0.6秒的差异,其中substr()
比串联快。我想这与以下事实有关:substr()
仅需要一个操作,而$str[0] . $str[1]
需要3个操作(获取值和并置本身)。我怀疑差异会根据所需的操作量而增加。
答案 1 :(得分:1)
如何保持活力? :D
echo implode(" ", $Arrayofstrings );
答案 2 :(得分:1)
答案 3 :(得分:1)
PHP 5
substr
比连接器慢,如果您想要最快的执行方法,那就是
"$str[0]$str[1]"
PHP 7
PHP7中的JIT和调用转换得到了优化,因此对substr
的调用比PHP5中的调用快得多