Dar*_*ein 14 php optimization concatenation
我ob_get_clean()最后一次看到了很多.通常我已经完成了$test .= 'test'
我想知道一个人是否比另一个更快和/或更好.
以下代码使用ob_get_clean():
ob_start();
foreach($items as $item) {
echo '<div>' . $item . '</div>';
}
$test = ob_get_clean();
Run Code Online (Sandbox Code Playgroud)
以下代码使用$test .= 'test':
$test = '';
foreach($items as $item) {
$test .= '<div>' . $item . '</div>';
}
Run Code Online (Sandbox Code Playgroud)
哪个更好?
结果是一样的,我认为性能差异可以忽略不计.基本上,个人风格偏好的问题.我会自己连接 - 只有当连接不是一个选项时才使用输出缓冲.
此外,不是同时运行ob_get_contents()和ob_clean(),而是运行ob_get_clean(),它同时执行两个操作.
输出缓冲区具有全局变量的所有缺陷.您必须知道从ob_start()到的所有执行路径ob_get_clean().你确定它会到达那里,并且之间打开的任何缓冲区都将被关闭吗?请记住,代码可能会抛出异常.对于下一个追踪的人来说,这可能是一个非常有趣的错误.
另一方面 - 我讨厌甚至提及它 - 由于PHP的内部原因,输出缓冲在连接大字符串时有点快.我不确定这是否仍然是真的.