У меня есть бесконечный цикл в PHP и мне нужно знать целое число после разрыва в переключателе. Щас пользуюсь break 5;
но теперь я уверен, что это правильно. Может ли кто-нибудь сказать мне, как вырваться из всех петель, но while (true)
, Я удалил ненужный код, чтобы остались только циклы.
$i = 0;
while (true)
{
// After the break 5 in the switch we should land here again
foreach ($users as $user)
{
while ($i < 10)
{
if (!empty($user))
{
if (isset($user->id))
{
switch($user->id)
{
case 1:
break 5;
default:
break 5; // Need to break out the foreach. So a break five right?
}
}
}
$i++;
}
}
$i=0;
}
Ответ равен 3, поскольку прерывание завершает выполнение текущей структуры for, foreach, while, do-while или switch.
куда break 1
существует только switch
, 2 while
а также 3 foreach
а также 4 главный while
,
Но, возможно, это лучший метод, так как вы специально указываете, куда идти, а не гадаете. Вы не можете поместить маркер goto внутри цикла, но в вашем случае вы можете просто сделать это перед циклом.
$i = 0;
mybegin:
while (true){
# 1. After the break 3 in the switch we will -not- land here.
# 3. So if you want to start here, you will need to use the goto statement.
foreach ($users as $user){
while ($i < 10){
if (!empty($user)){
if (isset($user->id)){
switch($user->id){
case 1:
break 3;
default:
goto mybegin;
}
}
}
$i++;
}
}
# 2. Using break 3, the code continues here.
$i=0;
}
Но я должен сказать, что мне никогда не требовалось столько циклов или операторов goto, так как всегда есть лучший способ.
Других решений пока нет …