【问题标题】:Is this PHP for loop supposed to run slow?这个 PHP for 循环是否应该运行缓慢?
【发布时间】:2012-06-20 16:58:15
【问题描述】:

我编写了以下循环,因为我必须重复相同/相似的代码 25 次。我可能需要再重复一遍,但现在是 25 岁。

<?php
for ($i = 0; $i <= 24; $i++) {
  echo "<div class=\"";
  if ($i = 0) {
    echo "overlay";
  } else {
    echo "layer"+$i;
  }
  echo "\">code</div>\n";
}
?>

上传到我的网站后,它需要很长时间才能加载,然后从我的计算机中提取资源,最终导致计算机变慢。

【问题讨论】:

  • 你想写"layer".$i吗?
  • @navnav - 我会为你简化这个。转到此处jsfiddle.net/j08691/x5jQq 并打开您的开发工具...
  • 如果不是无限循环,它应该解析。它正在非常缓慢地加载我的其他内容。现在它可以工作,这要归功于下面的答案。错过这么简单的错误真是太愚蠢了。 ):

标签: php performance loops for-loop


【解决方案1】:

尝试改变:

if ($i = 0) {

到:

if ($i == 0) {

您在每次迭代时将 $i 设置为 0,而不是比较它。

【讨论】:

  • 提示 OP:PHP 不像 VB.NET
  • 语言切换很有趣;我无法计算我完全有效的 perl 失败的次数,仅仅是因为我应该用 PHP 编写。
  • 谢谢!我不敢相信我什至没有注意到布尔部分......现在一切正常。
【解决方案2】:

你可能想要 if ($i == 0)

我怀疑您每次执行 if 循环时都会将 $i 重置为 0。

【讨论】:

    【解决方案3】:

    更好的简化:

    echo '<div class="overlay">code</div>';
    for ($i = 1; $i <= 24; $i++) {
       echo <<<EOL
    <div class="layer$i">code</div>
    
    EOL;
    }
    

    假设code 在循环内没有改变。另请注意,您的

    echo "layer"+$i;
    

    不正确。 PHP 中的字符串连接使用. 完成。您正在添加一个数学加法,因此 PHP 会将 "layer" 转换为 0,您最终只会有效地输出 $i 的值。

    【讨论】:

      【解决方案4】:
      <?php
      for ($i = 0; $i <= 24; $i++) {
        echo "<div class=\"";
        if ($i = 0) {
          echo "overlay";
        } else {
          echo "layer"+$i;
        }
        echo "\">code</div>\n";
      }
      ?>
      

      您没有使用比较操作 (==),而是使用了赋值运算符 (=)。

      使用,

      if($i == 0){
         echo "// your code  ";
         }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多