составной оператор, как выйти

Butcher

Новичок
составной оператор, как выйти

Люди, помогите, не знаю что делать
Перелистал справочник вдоль и поперёк, но так этого и не нашёл
В Delphi выход из составного оператора делается при помощи Exit

begin
a:= 'myApp';
Exit; //выход
form1.caption:= a;
end;

как выйти из {...} в пхп?
неужто придётся делать такую тупость:

while(AF_INET){ //начало составного оператора

echo "выполняется";
break;
echo "не выполняется";

break;} //конец составного оператора

и юзать break для выхода...
 

Solid

Drosera anglica
Удивляет тенденция... Неужели все поголовно мигрируют с delphi на php?
Butcher
Чем вам не понравился оператор break?
 

Butcher

Новичок
Дело в том, что мне нужно сделать что-то вроде этого:

<?php
...пхп-код выполняется...

if ($a == 'chto-to tam')
{
... пхп-код до этого момента выполняется ...
if ($b == 'chto-to tam2') stop();
... пхп-код после stop не выполняется ...
}

...пхп-код выполняется в любом случае...

?>

вот то-же самое, но с лишним составным оператором

<?php
...пхп-код выполняется...

if ($a == 'chto-to tam')
{
... пхп-код до этого момента выполняется ...
if ($b <> 'chto-to tam2')
{
... пхп-код выполняется если $b не равно 'chto-to tam2' ...
}
}

...пхп-код выполняется в любом случае...

?>

Здесь стоит проблема оптимизации кода. Мне нужно избавиться от множественных вложений составного оператора
Допустим, что некая стандартная пхп-шная функция stop() (а может быть и конструкция stop) будет прекращать выполнение кода В ДАННОМ СОСТАВНОМ ОПЕРАТОРЕ, тогда:

<?php
...пхп-код выполняется...

if ($a == 'chto-to tam')
{
... пхп-код до этого момента выполняется ...
if ($b == 'chto-to tam2') stop();
if ($c == 'chto-to tam3') stop();
if ($d == 'chto-to tam4') stop();

... а вот теперь можно работать дальше...
}

...пхп-код выполняется в любом случае...

?>

Это хорошо видно на примере функции, которую я написал для определения валидности записи ip-адреса. Здесь схожим оператором(конструкцией пхп) со stop() является return:

function isip($ip)
{
$addr = explode('.', $ip);
if (count($addr) <> 4) return false;
$s1 = intval($addr[0]);
$s2 = intval($addr[1]);
$s3 = intval($addr[2]);
$s4 = intval($addr[3]);
if (("$s1" <> "$addr[0]") or ($s1 < 0) or ($s1 > 255)) return false;
if (("$s2" <> "$addr[1]") or ($s2 < 0) or ($s2 > 255)) return false;
if (("$s3" <> "$addr[2]") or ($s3 < 0) or ($s3 > 255)) return false;
if (("$s4" <> "$addr[3]") or ($s4 < 0) or ($s4 > 255)) return false;
return true;
}
 

С.

Продвинутый новичок
Butcher, не надо бояться составного оператора. Это не самое страшное в этом мире.
 

Butcher

Новичок
Solid написал(а):
Удивляет тенденция... Неужели все поголовно мигрируют с delphi на php?
Нет, просто в делфи так часто делают. А вообще делфи гораздо сложнее чем пхп, когда я стал изучать пхп, то он показался мне отдыхом отностиельно Delphi, скрипт всётаки :)

Solid написал(а):
Butcher
Чем вам не понравился оператор break?
и что, теперь из-за одного составного оператора делать такую тупость? ))
здесь цикл прогоняется всего один раз
 

phprus

Moderator
Команда форума
Butcher
ИМХО тупость - это прерывание оператора if. Используй вложенные ifы, так как они преднозначены для того, чтобы выполнять какой-либо код в случае выполнения условия (как раз для того что тебе надо).
 

Butcher

Новичок
phprus - это только твоё имхо
а в строгих языках все нормальные люди делают так
и что теперь, мне делать 9 вложенных операторов?
а что если понадобится 30 или 100?
самое главное, это они получатся лесенкой
делфёвый программист бы посмеялся ;))))
 

Фанат

oncle terrible
Команда форума
Butcher
Здесь посмеётся любой программист. поскольку если ты довёл программу до 10 вложенных операторов - значит, у тебя ошибка в алгоритме.

Короче. в пхп брейком можно выйти только из цикла. Нравится это тебе, или нет.
Никто из здесь присутствующих никогда не испытывал от этого неудобства. Вне зависимости от твоих фантазий о программировании.
Если ты приведёшь здесь реальный пример кода, который вызывает у тебя затруднения - тебе помогут его оптимизировать. С вопросами же "а есть ли в пхп такая штука, я без неё очень скучаю, и без неё невозможно писать Правильные Программы" - это не сюда, а в церковь.

PS. функци, которую ты написал для проверки IP адреса - бессмысленная. Какой адрес ты собрался проверять, и зачем?

-~{}~ 13.01.07 13:06:

кстати, а тако оператор, как swotch... сase .. break тебе знаком?
мне, правда, ни разу не приходилось использовать его в скриптах - я, как-то, больше люблю циклы и массивы, но Настоящим программистам он нравится
 

WP

^_^
Хых... на правах извращения:
PHP:
for($i = FALSE; !$i; $i = TRUE)
{
 echo 'printed';
 break;
 echo 'not printed';
}
 

Butcher

Новичок
Фанат
есть несколько переменных с разными данными, их нужно проверять. Длину, численное значение, валидность ip, введённое слово и т.д.
эти данные могут изменяться по ходу программы, а также появляются новые, которые также надо проверять
получается, через строчку проверка, через строчку проверка, неправильно - выход
а по другому никак не сделаешь, кроме вложенных if'ов
ведь после этого должен идти остальной код. Было-бы хотябы что-то вроде GoTo...
нужно перемещаться между отдельными кусками кода
ну можно ещё некоторые куски ф функции оформить...

я не спорю, что есть другие методы, но это меня просто взбесило.
 

Фанат

oncle terrible
Команда форума
то, что ты написал - не конкретная проблема, а поток сознания.
извини, но в ответ на вопрос "есть несколько переменных с разными данными, их нужно проверять" можно ответить только "пиши код, который их проверяет". логично?
ты можешь привести реальный пример?

Маленькое замечание. Даже два.
но это меня просто взбесило.
1. К сожалению, здесь никому неинтересно, что тебя бесит.
2. Бешенство - не лучшее подспорье в программирование. Спокойстипе помогает гораздо лучше. Любую проблему можно решить, если не беситься, а искать пути решения. Возможно, они окажутся куда лучше, чем то, отсутствие которого тебя взбесило.

-~{}~ 13.01.07 15:46:

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

вот тебе конкретное решение конкретной проблемы.
какие будут ещё?
 

Butcher

Новичок
>1. К сожалению, здесь никому неинтересно, что тебя бесит.
дак давайте сожалеть вместе :)

ладно, всё это конечно фигня, просто хотел узнать, есть-ли что-то подобное в пхп
всем спасибо, особенно donflash, он принимал активное участие :)
Фанат, скажи асю если не жалко или в мою стукни 472811
можно считать тему запертой
 
Сверху