2013-09-13 5 views
-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

Может '$ numAccounts' равна нулю? –

+1

Какова остальная часть кода в вашем первом примере. У вас есть как минимум два оператора if, которые могут помешать '$ i = 0'. Вы уверены, что инструкции if пройдены? – putvande

+0

Вы пытались 'var_dump ($ numAccounts)' видеть, установлена ​​ли переменная и не равна 0? – Rohit

ответ

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; 
    } 
    } 
} 
+0

И если он выполнен, есть вероятность, что он увеличивается до 5 –

+0

Что я не понимаю - может ли этот цикл прекратиться, если он попадет внутрь этих ifs? Это должно быть навсегда, нет? Значение $ numAccounts составляет 240 в режиме реального времени. – EvgenijM86

+0

Нет. Прочтите код. Разве вы не видите, как он устанавливает «$ i» в 0 **, если учетная запись не существует **, а затем вставляет новую учетную запись? Затем, в следующий раз, когда он зацикливается, он ** не вводит 'if', потому что учетная запись теперь существует **. –

Смежные вопросы