Выход из цикла PHP

322
25 июля 2017, 19:53

Есть трехмерный массив.
Его обход осуществляется следующим способом:

foreach(){
    foreach(){
        foreach(){
            if (){
            }
        }
    }
 }

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

Answer 1

Если я правильно понял, вы не хотите прерывать вложенные циклы. Не знаю с какой целью и что вы обходите, но предположу, что что-то ищите.

Можно сделать так:

foreach () { // 1
    $found = 0;
    foreach () { // 2
        foreach () { // 3
            if () {
                $found++;
            }
        }
    }
    if ($found > 0) {
        break;
    }
}

Но, может быть, лучше выделить метод:

function find() {
    $found = 0;
    foreach () { // 2
        foreach () {
            if () { // 3
                $found++;
            }
        }
    }
    return $found;
}
foreach () { // 1
    $found = find();
    if ($found > 0) {
        break;
    }
}
Answer 2

Для того, чтобы выйти из вложенных циклов на PHP(for, foreach, while, do-while или switch) нужно использовать: break *количество вложенных циклов, которые нужно прервать*;

Тогда ваш код будет выглядеть следующим образом:

foreach(){
    foreach(){
        foreach(){
            if (){
              break 3;
            }
        }
    }
 }

Прочитать подробнее про break в PHP можно в официальной документации.

READ ALSO
Экспорт table php в excel

Экспорт table php в excel

как выгрузить в excel вот такую таблицу?

214
Сортировка по имени PHP

Сортировка по имени PHP

Будет ли корректно работать подобная функция?

367
регулярные выражения (php) и перенос строк

регулярные выражения (php) и перенос строк

здравствуйте, есть две такие регулярки: '~\*\*([^*]+)\*\*~' и ~""(+?)""~, но они не улавливают текст если в нём есть табы, переносы и тд

247
mysql запрос, 2 select'a

mysql запрос, 2 select'a

здравствуйте, есть запрос

215