Подтвердить что ты не робот

Простой цикл не работает

Я только начал изучать программирование. Я изучаю петли, но эта программа работает не так, как ожидалось. Я хочу разбить цикл, когда $a равно 3, так что я получаю вывод 1 2, но я получаю 3 как вывод: (

for($a=0;$a<10;++$a)
{
       if($a==3)
               break
       print"$a ";
}

Пожалуйста, помогите.

4b9b3361

Ответ 1

Отсутствует полуколония после break


Интересно знать, почему ваша программа ведет себя так, как она себя ведет.

Общий синтаксис break в PHP:

break Expression;

Выражение не является обязательным, но если его значение указывает, сколько вложенных должны быть разбиты структуры.

break 0; и break 1; такие же, как break;

Ваш код эквивалентен

if($a==3)
       break print"$a ";

Теперь функция print в PHP всегда возвращает 1. Следовательно, это эквивалентно

if($a==3)
       break 1;

поэтому, когда $a - 3, вы печатаете его значение и ломаете.

Желательно использовать фигурные скобки, чтобы заключить тело условного или цикла, даже если тело имеет один оператор. В этом случае тело if находится в фигурных скобках:

if($a==3) {
  break
}
print"$a ";

дал бы синтаксическую ошибку: PHP ожидает ;, но находит }

Все вышеперечисленное относится к PHP continue. Таким образом, программа

for($a=0;$a<10;++$a)
{
       if($a==3)
               continue
       print"$a ";
}

также печатает 3 по той же причине.

Ответ 2

Вам не хватает точки с запятой в конце перерыва.;)

И даже с точкой с запятой он не будет работать так, как вы ожидали, так как он будет считаться от 0 до 2. Вы должны написать это так, чтобы получить только 1 2.

<?php
for($a=1;$a<10;++$a)
{
   if($a==3)
           break;
   print"$a ";
}
?>

Примечание. $a теперь один в инициализации цикла for.

EDIT: Еще одна вещь, которую я заметил, о которой вы должны знать. В вашем управлении циклом вы получаете предварительный приращение (++$a). Это в основном означает, что PHP увеличивает значение $a, а затем возвращает $a. Другим вариантом является post-increment ($a++), где $a возвращается, а затем увеличивается на единицу.

В вашем случае оба пути позволят вам получить правильный результат.

Это иногда очень важно. Просто имейте это в виду.

Ответ 3

Как сказал codaddict, вам не хватает полуколонии после перерыва.

Ваш код должен выглядеть так:

for($a=0;$a<10;++$a)
{
       if($a==3)
           break;
       echo $a, ' ';
}

Ответ 4

for($a=0;$a<10;++$a)
{
       if($a==3) break;
       print $a;
}

@Downvoters: что неправильно, кроме меня, лаконичного?

Ответ 5

for($a=0;$a<10;$a++) {
   if($a==3) { exit; }
   else { echo $a; }
}

Ответ 6

Используйте echo вместо print.