我正在修改原作者使用数组构建网页的一些代码:
$output[]=$stuff_from_database;
$output[]='more stuff';
// etc
echo join('',$output);
谁能想出为什么这比(或反之亦然)更可取:
$output =$stuff_from_database;
$output .='more stuff';
// etc
echo $output;
最佳答案
它可能是由来自字符串不可变且因此连接成本高昂的语言的人编写的。正如以下测试所示,PHP 不是其中之一。所以第二种方法是性能明智的,更好。我能想到的使用第一种方法的唯一其他原因是能够用另一个替换数组的某些部分,但这意味着要跟踪未指定的索引。
~$ cat join.php
<?php
for ($i=0;$i<50000;$i++) {
$output[] = "HI $i\n";
}
echo join('',$output);
?>
~$ time for i in `seq 100`; do php join.php >> outjoin ; done
real 0m19.145s
user 0m12.045s
sys 0m3.216s
~$ cat dot.php
<?php
for ($i=0;$i<50000;$i++) {
$output.= "HI $i\n";
}
echo $output;
?>
~$ time for i in `seq 100`; do php dot.php >> outdot ; done
real 0m15.530s
user 0m8.985s
sys 0m2.260s
关于php: output[] w/join vs $output .=,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/111282/