Использование цикла do{}while();
должно быть очень обдуманным решением.Его поведение вызывает начальную итерацию и проверяет только условия перерыва в конце каждой итерации.
Сравните это с циклом while()
или лучше для ваших целей a for()
петля.Он выполняет условную проверку перед каждой итерации И счетчик, условие (я) разрыва и приращение находятся в одном читаемом месте.
Я не уверен, действительно ли вы имеете в видувыполнить ...
//do something here...
//and something here...
... на той же итерации, где происходит break 2
.Какие обстоятельства делают это подходящим для вашего проекта?Логика вашего фрагмента говорит, что вы хотите выполнить эти загадочные строки кода, когда $ x = 0, 1, 2, 3, 4 и 5;но блок foreach()
должен выполняться только тогда, когда $ x = 0, 1, 2, 3 и 4.
Если я прав, ваша логика проектирования немного ошибочна, я не рекомендую писатьbreak
точка внутри вашего цикла с другими процессами.Я рекомендую петлю for()
.
$arr = ['a', 'b', 'c'];
for ($x = 0; $x <= 4; ++$x) {
//do something here...
//and something here...
foreach ($arr as $k => $v){
echo "($x)$k - $v<br />";
}
}
Из-за вашего break 2
ваше while($x < 10);
условие никогда не будет выполнено, поэтому это нелогичное включение в проект.
Если вам действительно необходимо выполнить эти загадочные строки, но не циклические эхо-сигналы при $x = 5
, то полностью отмените управление циклом до разрыва и используйте while(true)
(запись неопределенного цикла), чтобы устранить замешательство разработчика.
$arr = ['a', 'b', 'c'];
$x = 0;
while (true) {
//do something here...
//and something here...
if ($x > 4) {
break 2;
}
foreach ($arr as $k => $v) {
echo "($x)$k - $v<br />";
}
++$x;
}