Конструкция do while

Статус
В этой теме нельзя размещать новые ответы.

koder

Истина здесь
Конструкция do while

Просмотрел много исходников, и постоянно вижу
конструкцию
PHP:
do {
if (..) {
..
break;
}
if (...)
} while(0)
Почему какой то изврат программисты пишут?
 

HraKK

Мудак
Команда форума
бред.

Типа филтр такой, если одно условине не верно, то остальное не делаем. Но это бред.
 

Popoff

popoff.donetsk.ua
koder
те программисты, вероятно, не знают конструкции else.
 

Gorynych

Посетитель PHP-Клуба
это не бред, а очень удобный прием, позволяющий уходить от множественной вложенности условных операторов. Кроме множества исходников, стоит еще и теорию подтянуть ;-)
 

HraKK

Мудак
Команда форума
Gorynych
return

-~{}~ 19.08.07 23:11:

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

koder

Истина здесь
Обычно я это встречаю у dezend кодов
вот пример dezend'a
PHP:
do
    {
        if ( !empty( $paramarr['perpage'] ) )
        {
            $paramarr['perpage'] = intval( $paramarr['perpage'] );
            if ( empty( $paramarr['perpage'] ) )
            {
                $paramarr['perpage'] = 20;
            }
            if ( empty( $_SGET['page'] ) )
            {
                $_SGET['page'] = 1;
            }
            $_SGET['page'] = intval( $_SGET['page'] );
            if ( $_SGET['page'] < 1 )
            {
                $_SGET['page'] = 1;
            }
            $start = ( $_SGET['page'] - 1 ) * $paramarr['perpage'];
            $sql['limit'] = "LIMIT ".( $start ).",".$paramarr['perpage'];
            break;
        }
        else if ( empty( $paramarr['limit'] ) )
        {
            $sql['limit'] = "LIMIT 0,1";
            break;
        }
        $paramarr['limit'] = getdotstring( $paramarr['limit'], "int", true, array( ), 1, false );
        if ( $paramarr['limit'] )
        {
            $sql['limit'] = "LIMIT ".$paramarr['limit'];
            break;
        }
        else
        {
            $sql['limit'] = "LIMIT 0,1";
        }
    } while ( 0 );
 

HraKK

Мудак
Команда форума
Ф юмор адназначно!

Что и требовалось доказать - бред.
 

Marquis

Новичок
Хотя, если честно мне в голову не приходит пример, такой воспаленной фантазии.
построение карты сайта через множественные sql запросы, первое что в голову пришло.

ps. в теорию деревьев не отправлять, я всего лишь показал пример в котором do-while будет достаточно удобной конструкцией.
 

HraKK

Мудак
Команда форума
Marquis
Если я вас понял рекурсия?
Вот обьясните мне в каком именно месте надо применять

function getTree($id)
{
$sql = {SQL}
while(fetch)
{
... getTree($id);
}
return $result;
}
}
 

koder

Истина здесь
т.е. тут надо убирать эти do и while
хотя код вроде рабочий с этими конструкциями...
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Как мягко и ненавязчиво нас подвели к истиному вопросу топика
т.е. тут надо убирать эти do и while
хотя код вроде рабочий с этими конструкциями...
:))))))))))
 

HraKK

Мудак
Команда форума
koder
Смотрите программа вывода на екран Hello world!
PHP:
<?php
sleep(10);
for($i=0;$i<1000000;$i=$i+0.01);
echo 'Hello world!';
?>

Как вы думаете тут надо убирать sleep и for? 
хотя код вроде рабочий с этими конструкциями...

[size=1][i]-~{}~ 19.08.07  23:44:[/i][/size]

[b]Mr_Max[/b]
не совсем.
 

koder

Истина здесь
Вот так вот dezender расшифровывает коряво зашифрованные скрипты
 

Marquis

Новичок
HraKK
Сорри, моя ошибка.
Построить через do-while можно только одну ветку дерева.
для целого дерева будет рекурсия.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху