Организация работы с циклом

Что надо знать при организация цикла? Больше всего проблем вызывают переменные в цикле. Как их правильно использовать?

Как показывает практика, коллизии переменных между разными итерациями цикла тяжело отследить. На цикл лучше заводить одну переменную (массив), которую в самом начале итерации и сбрасывать. В таком случае между разными итерациями точно не будет связей и ничего не собьётся, как иногда бывает. Когда переменные из разных итераций цикла не обновляются могут возникнуть коллизии, которые реально очень тяжело отслеживаются.

Переменные цикла лучше обнулять до использования, а не после. Дело в том, что циклы часто не доходят до конца и это норма, поэтому переменные надо обнулять именно до их использования, а не после.

Правильно:

foreach ($aCats as $sCurCat) { 
$mData = null;
...
$mData = getData();
}

Неправильно:

foreach ($aCats as $sCurCat) { 
$mData = getData();
...
$mData = null; // unset($mData);
}

Когда скрипт заточен на циклы, то удобнее всего отлаживать его по логам, а не ставить ограничения и городить костыли в его нормальной работе. Всегда же есть логи в которых всё написано.