Dre*_*rew 5 html php loops html-table
凭借我有限的经验/知识,我使用以下结构从MySQL查询中动态生成HTML表:
$c = 0;
$t = count($results);
$table = '<table>';
while ($c < $t) {
$table .= "<tr><td>$results[0]</td><td>$results[1]</td> (etc etc) </tr>";
++$c;
}
$table .= '</table>';
Run Code Online (Sandbox Code Playgroud)
这很有效.但是对于具有300多行的表,当脚本构建表时,页面加载会有明显的延迟.目前最大结果列表只有大约1,100行,等待时间不长,但显然还有等待.
是否还有其他方法可以输出比我的WHILE循环更快的HTML表格?(PHP只请......)
首先,可能缓慢是HTML渲染的结果,而不是PHP脚本.其次,构建非常大的表不是很有用,最好使用分页.
您可以通过以下几种方式改善PHP端的脚本性能:
使用ob_start(); 和ob_get_clean(); - 这样数据将立即传递给html:
ob_start();
// your code here
echo ob_get_clean();
Run Code Online (Sandbox Code Playgroud)使用数组和连接字符串:
$str = array();
$str[] = 'add the strings';
echo implode($str);
Run Code Online (Sandbox Code Playgroud)BR.
\n\n\n是否有其他输出 HTML 表的方法比我的 WHILE 循环更快?
\n
可能是的。PHP 是一种模板语言。就这样使用它,不要对抗它!本机模板可能比手动将字符串费力地粘贴在一起更快 \xe2\x80\x89\xe2\x80\x94\xe2\x80\x89 并且 IMO 更具可读性。
\n\n<table>\n <?php foreach($results as $result) { ?>\n <tr>\n <td><?php echo htmlspecialchars($result[0]); ?></td>\n <td><?php echo htmlspecialchars($result[1]); ?></td>\n </tr>\n <?php } ?>\n</table>\nRun Code Online (Sandbox Code Playgroud)\n\n(请注意 的使用。如果每次htmlspecialchars将纯文本插入 HTML 时不使用此函数,则您的代码存在 HTML 注入缺陷,从而导致潜在的跨站点脚本漏洞。您可以定义一个具有短名称的函数喜欢这样做以避免一些打字,但您必须对字符串进行 HTML 编码。)hecho htmlspecialchars
然而:虽然这更漂亮、更安全,但在实践中不太可能明显更快。您的客户端渲染速度缓慢几乎肯定是由以下原因引起的:
\n\n大量表数据的网络传输速度。您可以通过为您的 Web 服务器部署 或其他压缩过滤器来改进这一点zlib.output_compression(mod_deflate如果您还没有这样做)。
大型表格的渲染速度。table-layout: fixed您可以通过在元素上设置 CSS 样式<table>并为想要具有固定宽度的列添加<col>具有显式样式的元素来改进这一点。width
| 归档时间: |
|
| 查看次数: |
3636 次 |
| 最近记录: |