php:output [] w/join vs $ output.=

3 php string-concatenation

我正在修改一些代码,其中原作者通过使用数组构建了一个网页:

 $output[]=$stuff_from_database;
 $output[]='more stuff';
 // etc
 echo join('',$output);
Run Code Online (Sandbox Code Playgroud)

任何人都可以想到为什么这样做会更好(反之亦然):

 $output =$stuff_from_database;
 $output .='more stuff';
 // etc
 echo $output;
Run Code Online (Sandbox Code Playgroud)

Vin*_*vic 13

它可能是由一个来自语言的人编写的,其中字符串是不可变的,因此连接是昂贵的.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
Run Code Online (Sandbox Code Playgroud)