簡體   English   中英

PHP循環最大執行時間

[英]PHP Loop Maximum Execution Time

我下面的php文件中有此代碼段。 問題是我得到的錯誤最大執行時間超過了120秒。 我無法弄清楚問題,但我認為這可能是我執行循環的方式。 如果我做的事不好,請事先諒解。

<?php

for ($i=0;$i<168;$i++) {  
    $answers[$i] = (int)$data[6+$i];  
}

$A = $B = $C = $D = $E = $F = $G = $H = $I = $J = $K = $L = $M = $N = 0;

for ($z=0;$z<168;$z+14) {
    $A = $A + $answers[0+$z];
    $B = $B + $answers[1+$z];
    $C = $C + $answers[2+$z];
    $D = $D + $answers[3+$z];
    $E = $E + $answers[4+$z];
    $F = $F + $answers[5+$z];
    $G = $G + $answers[6+$z];
    $H = $H + $answers[7+$z];
    $I = $I + $answers[8+$z];
    $J = $J + $answers[9+$z];
    $K = $K + $answers[10+$z];
    $L = $L + $answers[11+$z];
    $M = $M + $answers[12+$z];
    $N = $N + $answers[13+$z];
}

echo "<table border='1'>";
echo    "<tr><td>A</td><td>" . $A . "</td></tr>";
echo    "<tr><td>B</td><td>" . $B . "</td></tr>";
echo    "<tr><td>C</td><td>" . $C . "</td></tr>";
echo    "<tr><td>D</td><td>" . $D . "</td></tr>";
echo    "<tr><td>E</td><td>" . $E . "</td></tr>";
echo    "<tr><td>F</td><td>" . $F . "</td></tr>";
echo    "<tr><td>G</td><td>" . $G . "</td></tr>";
echo    "<tr><td>H</td><td>" . $H . "</td></tr>";
echo    "<tr><td>I</td><td>" . $I . "</td></tr>";
echo    "<tr><td>J</td><td>" . $J . "</td></tr>";
echo    "<tr><td>K</td><td>" . $K . "</td></tr>";
echo    "<tr><td>L</td><td>" . $L . "</td></tr>";
echo    "<tr><td>M</td><td>" . $M . "</td></tr>";
echo    "<tr><td>N</td><td>" . $N . "</td></tr>";
echo "</table>";
echo "<br>";

這個循環實際上並沒有增加:

for ($z=0; $z<168; $z+14) {

應該:

for ($z=0; $z<168; $z+=14) {

$z+14實際上不會增加$z

除了已經提供的解決核心問題的答案之外,如果重復被匯總(未經測試,但應該使您走上正確的軌道),則可以大大簡化代碼:

   $totalCount = 168;
   $batchSize = 14;

   for($i=0;$i<168;$i++){  
       $answers[$i] = (int)$data[6+$i];  
   }

   $buffer = array();
   for ($i = 0; $i < $batchSize; $i ++) 
     $buffer[$i] = 0;

   for ($z=0; $z<168; $z += $batchSize) {
       for ($i = 0; $i < $batchSize; $i ++) {
           $buffer[$i] += $answers[$i + $z]
       }
   }

   echo "<table border='1'>";
   for ($i = 0; $i < $batchSize; $i ++) {
       $colName = chr(65 + $i);             // A has code 65
       echo "<tr><td>$colName</td><td>" . $buffer[$i] . "</td></tr>";
   }
   echo "</table>";
   echo "<br>";

這將允許將來輕松更改問題計數和/或批處理計數(除非您超出Z ,這需要更改chr邏輯)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM