Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Какой из циклов быстрей.


Автор: Predator199 30.11.2012, 17:46
Какой цикл лучше использовать, foreach или while. Что быстрей?

Автор: Arantir 30.11.2012, 17:56
Да у них совершенно разное предназначение.

foreach перебирает весь массив, при этом обращаясь к нему всего раз. Если же сделать while($i < count($array)) то мы получим тот же эффект, но уже с постоянным обращением к count().
И помощью foreach нельзя сделать так:
Код

$cont =  true;
while ($cont)
{
    if($somehing)
    {
    }
    else if ($something_else)
    {
    }
    else
    {
        $cont =  false;
    }
}

А с помощью while нельзя перебрать ассоциативный массив.

В большинстве случаев одно другим просто так не заменишь. Скажите сначала, где и как вы их сравниваете, а потом уж можно будет подумать.

Автор: Predator199 30.11.2012, 18:03
Не, я их не сравниваю. Просто могу воспользоваться тем или сделать через другой. На данный момент мне проще через foreach. Сделать 1 запрос к бд, получить массив со всеми нужными полями(записями). Перебрать(через foreach) и вывести результат всех записей. Или не использовать циклы, достать то что нужно. Но уже что та 1.
Вот и задумался, какой быстрей обработает. Достанет все записи из бд.

Автор: Arantir 30.11.2012, 23:45
Вы используете fetch_all, а потом все это перебираете, или как? У вас слишком абстрактные объяснения =)

Использовать fetch_all, а потом перебирать его через foreach - довольно быстрый вариант. Но, что очевидно, он использует много памяти, так как нужно держать там сразу все строки со всеми их полями.

Если вы берете с БД сразу очень много строк, то лучше разбирать результат построчно через while и fetch_array

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)