Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/10: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Harma
43 / 44 / 35
Регистрация: 13.01.2016
Сообщений: 155
1

Остановить цикл

30.01.2016, 11:08. Просмотров 2020. Ответов 3
Метки нет (Все метки)

Здравствуйте, подскажите, как можно остановить внешний цикл при первом найденном вхождение?
PHP
1
2
for($x=0;$x<700;$x+=5){
    for($y=0;$y<5;$y+=5){
К примеру если в координатах x=15; y=0; нашли то что нужно, то остановить цикл:
PHP
1
for($x=0;$x<700;$x+=5){
и дальше не прогонять.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2016, 11:08
Ответы с готовыми решениями:

Как остановить скрипт
вот к примеру запустил я скрипт по перебору записей в таблице и записи их в...

Как остановить POST запрос?
Как остановить POST запрос после его единоразового принятия? Т.е. если человек...

Как остановить выполнение php скрипта
Есть страничка с php кодом, находящимся примерно по середине. Мне нужно, чтобы...

Остановить 2 функции рекурсивно вызывающие друг друга
У меня есть две функции которые могут вызывать друг друга (первая берет массив...

Как остановить выполнение скрипта php другим скриптом php?
Как остановить выполнение скрипта php другим скриптом php?Спасибо!

3
Jewbacabra
Эксперт PHP
3574 / 2967 / 1320
Регистрация: 24.04.2014
Сообщений: 9,017
30.01.2016, 11:26 2
Лучший ответ Сообщение было отмечено Harma как решение

Решение

Harma, красивого варианта нет
1)
PHP
1
2
3
4
5
6
7
8
9
10
11
for($x=0;$x<700;$x+=5){
    for($y=0;$y<5;$y+=5){
        if (/* break */) {
            $stop = true;
            break;
        }
    }
    if (!empty($stop)) {
        break;
    }
}
Появляется дополнительный код в цикле уровнем выше, при более сложной логике код может быть сложнее
2)
PHP
1
2
3
4
5
6
7
8
for($x=0;$x<700;$x+=5){
    for($y=0;$y<5;$y+=5){
        if (/* break */) {
            goto stop;
        }
    }
}
stop:
goto большинство не любит, хотя в данном случае код получился понятнее чем код выше.
3)
PHP
1
2
3
4
5
6
7
8
9
10
try {
    for($x=0;$x<700;$x+=5){
        for($y=0;$y<5;$y+=5){
            if (/* break */) {
                throw new Exception;
            }
        }
    }
} catch (Exception $e) {
}
По сути это тот же вариант, что и выше без goto. Но получилось еще хуже, так как исключения используются не по назначению
2
Jodah
Эксперт PHP
2850 / 2481 / 1057
Регистрация: 01.08.2012
Сообщений: 8,772
30.01.2016, 11:26 3
PHP
1
break;
1
Para bellum
Эксперт PHP
4187 / 3115 / 1010
Регистрация: 06.01.2011
Сообщений: 9,091
30.01.2016, 14:51 4
Лучший ответ Сообщение было отмечено Jewbacabra как решение

Решение

Цитата Сообщение от Jewbacabra Посмотреть сообщение
красивого варианта нет
Как это нет? Есть же break. А break принимает аргумент, из какого цикла выйти:
PHP
1
2
3
4
5
6
7
8
9
<?php
    for($x=0;$x<700;$x+=5){
        for($y=0;$y<15;$y+=5){
            if($y == 10){
                echo 'Стоп'. PHP_EOL;
                break 2; ######### Выходим из обоих циклов ###########
            }
        }
    }
Добавлено через 1 минуту
Никаких goto и исключений тут не нужно.
2
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2016, 14:51

Остановить цикл
Здравствуйте уважаемые форумчане! помогите, пожалуйста, остановить цикл когда...

остановить цикл if
как остановить цикл иф, чтобы рандомайз выполнялся определенное кол-во раз? If...

Остановить цикл
есть цикл например: for a:=1 to 1000 do write(B); что надо дописать, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru