在for循环中重新分配循环变量。错误?

时间:2013-09-13 20:15:10

标签: php for-loop

我试图理解为什么这段代码会终止(是的,我测试了它) - https://github.com/drkyro/mmcFE-litecoin/blob/master/cronjobs/cronjob.php

34: for($i = 0; $i < $numAccounts; $i++){
.
.
.
63:             $i=0;
.
.
.
129: }

这个简单的测试永远不会结束:

for($i = 0; $i < 10; $i++){
    echo "i1 = $i";
    $i=0;
}

有什么区别以及为什么在第一种情况下不重新分配循环变量?

1 个答案:

答案 0 :(得分:4)

因为并不总是执行$i = 0。只有在帐户不存在时才会执行。然后会创建该帐户,因此在下一次传递时$i不会重置为0。您还需要围绕代码的上下文。

这种行为的简化视图:

for($i = 0; $i < $numAccounts; $i++) {
    $accountExistsQ = mysql_query("SELECT id FROM networkBlocks WHERE accountAddress = '".$transactions[$i]["txid"]."' ORDER BY blockNumber DESC LIMIT 0,1")or die(mysql_error());
    $accountExists = mysql_num_rows($accountExistsQ);

    if(!$accountExists) {
      mysql_query("INSERT INTO `networkBlocks` (`blockNumber`, `timestamp`, `accountAddress`, `confirms`, `difficulty`) ".
        "VALUES ('$assoc_block', '$assoc_timestamp', '" .$transactions[$i]["txid"]. "', '" .$transactions[$i]["confirmations"]. "', '$difficulty')");

      $i=0;
    }
  }
}