-2

我试图理解为什么这段代码会终止(是的,我测试过) - 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;
}

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

4

1 回答 1

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;
    }
  }
}
于 2013-09-13T20:18:22.257 回答