php脚本优化

时间:2012-04-14 15:45:49

标签: php

我不是一个php大师,需要你的帮助。

我有一个带有选择菜单的php表单。菜单由客户表电子邮件组成。我使用了以下代码:

for($i = 0; $i < sizeof($customers_table); $i++){
     echo '<option value="'.$customers_table[$i]['id'].'">'.$customers_table[$i]['email'].'</option>';
}

基数相当大,因此形成选项字段需要时间。有没有办法优化脚本,以便它可以更快地工作。

谢谢。

2 个答案:

答案 0 :(得分:1)

由于尺寸没有变化,请将其存储:

$size = sizeof($customers_table);
for ($i = 0; $i < $size; $i++) {
    echo '<option value="'.$customers_table[$i]['id'].'">'.$customers_table[$i]['email'].'</option>';
}

然后,您可以缩短循环条件并减少阵列访问:

$i = $size = sizeof($customers_table);
while ($i) {
    $table = $customers_table[$size-$i--];
    echo '<option value="'.$table['id'].'">'.$table['email'].'</option>';
}

下一部分是echo语句,它可以在输出之前输出而不是连接字符串:

$i = $size = sizeof($customers_table);
while ($i) {
    $table = $customers_table[$size-$i--];
    echo '<option value="', $table['id'], '">', $table['email'], '</option>';
}

如果这有所不同,则需要指标。最长的时间可能是您发送到浏览器的HTML数量。但这不属于这个片段的范围。

为了提高代码的整体可读性,我建议使用foreach

foreach ($customer_table as $row)
{
    echo '<option value="', $table['id'], '">', $table['email'], '</option>';
}

这通常也很快。

答案 1 :(得分:0)

正如Andy所说,以这种方式优化这个脚本并不是一个好主意。 如果你想要重大的时间变化,你必须重新考虑这个问题。

你有一个客户列表,如果有时间问题,我认为有很多。因此,下拉列表对用户来说是无用的。

还有其他解决方案,效率更高:

  • 使用某种缓存&gt;您的html代码将始终相同,因此您只需要在添加,删除或更新客户时执行一次循环,并将html代码存储在脚本或数据库中。因此,每次重新加载页面时,您只需要检索html代码。
  • 不要加载所有客户&gt;用户不需要查看所有客户,只需要查看他感兴趣的客户,因此使用某些Ajax,您可以在用户输入时加载选项(请参阅此示例:jQuery Autocomplete

这些解决方案最适合进行优化,如果将它们组合在一起(高于3个字符的缓存和自动填充类型),对用户体验来说也会更好。