У меня есть несколько рабочих петель в моей функции, но этот я просто не могу работать, как это должно быть. Я предположил, что while($variable == false)
выйдет из цикла, как только произойдет $variable = true;
. Вот голой вариант с двумя операторами внутри цикла.Пока Loop не ломается, когда условие встречается
$excluded = false;
while($excluded == false):
$excluded = in_array(strtolower($extension), $GLOBALS['codexts']) ? true : false;
$excluded = $file != "." && $file != ".." ? false : true;
break;
endwhile;
Внутри цикла, первое определение действительно производит false
, когда это предположить, но цикл не сломаться. Он переходит ко второму, который возвращает true. Если изменить второй к этому:
$excluded = $excluded ? $excluded : ($file != "." && $file != ".." ? false : true);
... тогда я получаю результат я хочу, но только потому, что я исправляя за провал время цикла, чтобы сломать, когда $excluded
сначала определяется как true
, Что я делаю неправильно здесь?
UPDATE Я просто перечитать инструкцию, и, видимо, я пропустил эту часть:
Значение выражения проверяется каждый раз в начале цикла, так что даже если это значение изменяется в течение выполнение вложенных операторов, выполнение не прекратится до конца итерации
Именно поэтому итерации возвращались обратно к ложному. В конце концов, мне нужно делать ручные условные перерывы.
Вы уверены, что он идет на второй цикл? В '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' –
Отсутствие фигурных скобок ..... –
Оператор break находится в конце цикла, чтобы покрыть те итерации, которые никогда не возвращаются true, поэтому цикл не застревает. Но я заверяю вас, что есть итерации, возвращающие true в первом утверждении, но не ведут себя так, как будто они верны, поэтому я знаю, что это происходит во втором утверждении. Разрыв в конце не является проблемой. –