[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл for дублирует надписи
AlmazDelDiablo
Я не знал, как назвать тему, уж извините.

Так вот. Есть цикл такого вида:
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)
когда я пытаюсь на известных мне приемах посторить такой цикл.

Судя по фразе "А мне надо каким-то образом вынести это сообщение из цикла и при этом, чтобы оно оставалось в условии ифа" таких приемов немного...
Если я правильно понял сию загадочную мысль smile.gif, то надо:
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 - понял, да, согласен smile.gif

Спустя 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
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.