我不是一个php大师,需要你的帮助。
我有一个带有选择菜单的php表单。菜单由客户表电子邮件组成。我使用了以下代码:
for($i = 0; $i < sizeof($customers_table); $i++){
echo '<option value="'.$customers_table[$i]['id'].'">'.$customers_table[$i]['email'].'</option>';
}
基数相当大,因此形成选项字段需要时间。有没有办法优化脚本,以便它可以更快地工作。
谢谢。
答案 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所说,以这种方式优化这个脚本并不是一个好主意。 如果你想要重大的时间变化,你必须重新考虑这个问题。
你有一个客户列表,如果有时间问题,我认为有很多。因此,下拉列表对用户来说是无用的。
还有其他解决方案,效率更高:
这些解决方案最适合进行优化,如果将它们组合在一起(高于3个字符的缓存和自动填充类型),对用户体验来说也会更好。