Так вот. Есть цикл такого вида:
for( $i = 0; $i <= 7; $i++ ) {
if( $l2_acc_char[$i] != $_POST['l2_acc_charcol'] ) {
msgbox( "Ошибка", "У вас нет такого персонажа" );
$l2_acc_info2[] = "Хак ника чара";
}
}
При его выполнении сообщение, выводимое через msgbox дублируется семь раз. А мне надо каким-то образом вынести это сообщение из цикла и при этом, чтобы оно оставалось в условии ифа. Надеюсь на вашу помощь, так как у меня шарики за ролики заходят, когда я пытаюсь на известных мне приемах посторить такой цикл.
Надеюсь, понятно объяснил.
Спустя 45 минут, 50 секунд (29.09.2010 - 19:03) sergeiss написал(а):
Цитата (AlmazDelDiablo @ 29.09.2010 - 19:17) |
когда я пытаюсь на известных мне приемах посторить такой цикл. |
Судя по фразе "А мне надо каким-то образом вынести это сообщение из цикла и при этом, чтобы оно оставалось в условии ифа" таких приемов немного...
Если я правильно понял сию загадочную мысль , то надо:
1. Перед циклом сделать новую переменную $error=false;
2. Если условие внутри цикла выполнено, то в блоке, где идет назначение, еще добавить
$error=true;
break;
По окончании цикла проверяешь величину $error и что-то делаешь, что тебе надо.
Спустя 35 минут, 21 секунда (29.09.2010 - 19:38) waldicom написал(а):
Почему бы не занести эту переменную в саму строчку цикла?
$error = false;
for( $i = 0; $i <= 7, !$error; $i++ ) {
...
if($i == 4){
$error = true;
}
...
}
Спустя 2 минуты, 51 секунда (29.09.2010 - 19:41) sergeiss написал(а):
waldicom - я это и имел ввиду... Может быть, только некорректно объяснил свою мысль?
Спустя 21 минута, 6 секунд (29.09.2010 - 20:02) waldicom написал(а):
Я понял, поэтому и спросил, зачем использовать break, когда от него лучше отказываться
Спустя 59 минут, 6 секунд (29.09.2010 - 21:01) sergeiss написал(а):
waldicom - понял, да, согласен
Спустя 5 минут, 17 секунд (29.09.2010 - 21:07) Sonax написал(а):
А почему отказаться? Меня преподаватель в университете тоже постоянно клеймит, говорит, что exit, break - это мат в коде, а материться не разрешает. А Вы почему отказываетесь?
Спустя 16 минут, 3 секунды (29.09.2010 - 21:23) sergeiss написал(а):
Sonax - отказывать не вообще, а в данном случае. Потому что более логично иметь единственное место выхода из цикла, в его штатном условии. Особенно, если цикл занимает много строк, то в случае ошибок сложно будет искать их причину. Тем более, если будет несколько брейков в разных местах.
Спустя 46 минут, 53 секунды (29.09.2010 - 22:10) Sonax написал(а):
=) Понял.
Спустя 1 минута, 13 секунд (29.09.2010 - 22:11) waldicom написал(а):
Цитата (Sonax @ 29.09.2010 - 20:07) |
А почему отказаться? Меня преподаватель в университете тоже постоянно клеймит, говорит, что exit, break - это мат в коде, а материться не разрешает. А Вы почему отказываетесь? |
Потому что логика программы нарушается. Если Вы один работаете в Вашим кодом, то можете использовать, кто же запретит.
Но если код пользуют многие, то применение такиого рода функций/операторов счиатется дурным тоном
опоздал
Спустя 7 минут, 43 секунды (29.09.2010 - 22:19) Sonax написал(а):
Вообщем буду продолжать стараться не использовать их.
Спустя 9 часов, 58 минут, 9 секунд (30.09.2010 - 08:17) AlmazDelDiablo написал(а):
Всем спасибо) Заодно и меня новому научили )
_____________
Блог | VK | GitHub | Twitch