lexa host "хорошим" sql можно свести на ноль все эти изыски. я юзаю и то и другое и не думаю что быстрее и на ского ms.
По моим изысканиям foreach быстрее чем for ~ в 2 раза. И, кстати, это легко объяснить. Всё сводиться с природе PHP, а именно тому, что это скриптовый язык. Разница состоит в том, что foreach содержит все манипуляции с массивом внутри себя, на уровне ядра, написанного на C. for же полностью обрабатывает массив PHP операндами. Возьмём пример PHP: <?php $array = range(0, 1000); for ($i = 0, $cnt = sizeof($array); $i < $cnt; $i++){ $item = $array[$i]; } foreach ($array as $value){ $item = $value; } Так в чём же разница между этими двумя конструкциями помимо визуальной записи? Давайте разберёмся что происходит на уровне PHP кода. for 1). Инициализируеться счётчик цикла $i 2). Узнаем размерность массива и записываем результат в $cnt 3). Проверяем условие конца цикла - меньще ли $i чем $cnt 4). Присваеваем $item значение текущего элемента массива. 5). Инкрементируем $i и переходим к пункту 3. foreach 1). Инициализируем перебор массива 2). $value присваиваем в $item и повторяем действие 2 пока не закончиться массив. Так это выглядет с точки зрения PHP (без вникания во внутренности конструкций for и foreach). У foreach меньше действий, и он быстрее даже не смотря на то, что массив может быть ассоциативный, что само по себе намного медленее обычного числового массива. У for у нас в PHP 5 действий, из них 3 выполняються циклически, У foreach всего 2, при этом циклически выполняеться только одно. Как вы все знаете, скорость выполнения C кода намного больше чем PHP, пусть даже это PHP extension. В итоге мы имеем в случае for перебор полностью на уровне PHP, при foreach весь перебор происходит на уровне C. Отсюда и такая, с первого взгляда кажущаяся странной, разница в скорости выполнения этих циклов. Ещё влияет то обстоятельство, что в случае for мы имеем доступ к массиву. Как бы этого не хотелось, а это куда более долгая процедура чем доступ к переменной, который мы имеем во втором случае. Ну и в случае for у нас расходуеться немного больше памяти, т.к. нам нужно 2 дополнительных переменных. З.Ы. Народ, мне кажеться, или у меня действительно таллант к программированию и глубокому пониманию работы вещей, связанных с программированием....?!