我试图理解为什么这段代码会终止(是的,我测试了它) - 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;
}
有什么区别以及为什么在第一种情况下不重新分配循环变量?
答案 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;
}
}
}