循环还是没有循环?

时间:2010-01-30 01:17:15

标签: php loops

在这种情况下,使用循环是否更好?

echo "0";
echo "1";
echo "2";
echo "3";
echo "4";
echo "5";
echo "6";
echo "7";
echo "8";
echo "9";
echo "10";
echo "11";
echo "12";
echo "13";

$number = 0;

while ($number != 13)
{
    echo $number;
    $number = $number + 1;
}

8 个答案:

答案 0 :(得分:5)

前者可能更快。后者是很多更具可读性。选择是你的;)

答案 1 :(得分:5)

更好的是

$totalWhatevers = 14;
for ($number = 0; $number < $totalWhatevers ; $number++)
{
    echo $number;
}

其中'totalWhatevers'是描述性的,告诉我们你实际在计算什么。

答案 2 :(得分:4)

使用循环更清楚;根据经验,如果使用较少的代码行进行循环,请执行此操作。

你的循环可以写得更简洁:

foreach (range(0,13) as $n)
    echo $n, "\n";

答案 3 :(得分:2)

我会使用for循环,只是为了让所有内容保持开放状态(原始循环似乎只能打印12个):

for ($number = 0; $number <= 13; $number++)
{
    echo $number;
}

比写出一百万个“回声”要清晰得多,而且代码是相当自我解释的。

答案 4 :(得分:1)

$string = "<?php \n";

$repeatNum = 20;

for($i = 0; $i < $repeatNum; $i++)
{
    $string .= "echo \"" . $number . "\"; \n";
}

$string = "?>";

现在你可以

eval($string);

file_put_contents("newfile.text", $string);

你会得到一个包含所有回声的文件!

注意:这不是一个“严肃”的答案。如果你真的想要创建一个包含许多回声的PHP文件,它可以工作,但是在最后评估语句可能不是常规编程实践的最佳选择。

答案 5 :(得分:0)

根据您的尝试,循环可以帮助您更清晰,更简单地更新代码。

例如,当显示的数量可能不同时,您可以使用配置变量。

$repeat = 20;

for ($i = 0; $ < $repeat; ++$i) {
   echo $i;
}

答案 6 :(得分:0)

错误在于认为循环生成代码。事实并非如此。

echo "0";
echo "1";
echo "2";
echo "3";

PHP将逐一执行这些语句。

for ($i = 0; $i <= 3; ++$i) {
    echo $i;
}

在这种情况下,PHP执行相同的 echo语句四次。每次到达块的末尾(一个块是花括号之间的代码),执行跳转回条件。如果条件仍然为真,则块再次执行。

哪种方法提供最佳性能?这很难说。

方法1的减速)回显的数字范围越大,必须在脚本中解析的回声语句就越多。

方法2的减速)回显的数字范围越大,执行跳转的次数越多,条件必须测试的次数越多,计数器必须递增的次数就越多。

我不知道哪种情况会导致更多CPU指令,或导致更多内存使用。但作为之前编程的人,我知道一个秘密:无所谓。执行的差异可能会在一秒钟内的几百万分之一

因此,使效果变得明显的唯一方法就是回显千万个数字,在这种情况下,一个方法可能比另一个方法多一秒。这不是一个值得的收获吗?没有!当我们回应一千万个数字时,我们将花费分钟来处理任何一种方法。只有它们之间的差异会相差一秒,这完全可以忽略不计。更不用说,无论如何谁知道哪一个更好?

作为程序员,您可以做的最好的事情是使您的代码可读可维护。循环比一页回声线更容易理解。通过一个循环,我知道你没有错过任何中间数字,但有了回声我必须检查每一行。

技术术语版本:两种算法都具有复杂度O(n)。它们的性能只能存在恒定的差异,如果这个常数不是特别大,那么它可以忽略不计。

答案 7 :(得分:0)

你的意思是什么?更好的解析器?更好的电脑?执行时间更快?我可以告诉你,对于使用你的代码和系统的人来说,循环总是更好。

相关问题