Что надо знать при организация цикла? Больше всего проблем вызывают переменные в цикле. Как их правильно использовать?
Как показывает практика, коллизии переменных между разными итерациями цикла тяжело отследить. На цикл лучше заводить одну переменную (массив), которую в самом начале итерации и сбрасывать. В таком случае между разными итерациями точно не будет связей и ничего не собьётся, как иногда бывает. Когда переменные из разных итераций цикла не обновляются могут возникнуть коллизии, которые реально очень тяжело отслеживаются.
Переменные цикла лучше обнулять до использования, а не после. Дело в том, что циклы часто не доходят до конца и это норма, поэтому переменные надо обнулять именно до их использования, а не после.
Правильно:
foreach ($aCats as $sCurCat) { $mData = null; ... $mData = getData(); }
Неправильно:
foreach ($aCats as $sCurCat) { $mData = getData(); ... $mData = null; // unset($mData); }
Когда скрипт заточен на циклы, то удобнее всего отлаживать его по логам, а не ставить ограничения и городить костыли в его нормальной работе. Всегда же есть логи в которых всё написано.