-2

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

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

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

基数比较大,所以形成期权字段需要时间。有什么办法可以优化脚本,让它运行得更快。

谢谢你。

4

2 回答 2

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>';
}

这通常也很快。

于 2012-04-14T15:48:05.843 回答
0

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

你有一个客户列表,如果有时间问题,我假设有很多。因此,下拉列表对用户来说毫无用处。

还有其他更有效的解决方案:

  • 使用某种缓存 > 您的 html 代码将始终相同,因此您只需执行一次循环,当您添加、删除或更新客户时,并将 html 代码存储在脚本或数据库中。因此,每次重新加载页面时,您只需检索 html 代码。
  • 不要加载所有客户

这些解决方案最适合优化,如果您将它们结合起来(缓存和自动完成超过 3 个键入的字符),那么用户体验也会更好。

于 2012-04-14T16:08:32.120 回答