За последние 24 часа нас посетили 56046 программистов и 1682 робота. Сейчас ищут 1093 программиста ...

Цикл while и оператор break

Тема в разделе "Прочие вопросы по PHP", создана пользователем KOKS1999, 19 янв 2015.

  1. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Здравствуйте опять xD
    Тем будет ещё много ;)

    <?PHP
    $i=1;
    $iSum=0;
    while($i<=2)
    {
    echo $iSum+=$i;
    if($i==100)
    {
    break;
    }
    $i++;
    }
    ?>

    Выводит 1 и 3 так как:
    Выводит 1 так как 1 меньше 2.Теперь переменная $iSum =1 потом i=2 2=2 значит выводит потом переменные складываются и 1+2=3 поэтому выводит 1 и 3.
    Я не очень понимаю вот эту часть кода:

    {
    echo $iSum+=$i;
    if($i==100)
    {
    break;
    }
    $i++;
    }
     
  2. p@R@dox 55RU

    p@R@dox 55RU Зэк
    [ БАН ]

    С нами с:
    21 май 2014
    Сообщения:
    1.358
    Симпатии:
    7
    Адрес:
    с планеты Ялмез
    хорошо что не понимаешь..
    - она здесь вообще лишняя
     
  3. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Этот цикл также "работает" до тех пор, пока истинно условие, стоящее внутри while, но, в отличии от самого while, он всегда выполнится хотя бы 1 раз, даже если исходное выражение, стоящее в условии было сразу ложно.
    Так как я рассказываю про циклы, будет важно знать, что существует специальный оператор, прерывающий выполнение цикла "досрочно", то есть до наступления состояния условия, при котором цикл завершался бы, если бы "все шло как обычно". Это - оператор break. Он позволяет выйти из цикла немедленно и сразу же перейти к оператору, идущему сразу после цикла.
    Например:
    <?PHP
    $i=1;
    $iSum=0;
    while($i<=200000)
    {
    $iSum+=$i;
    if($i==100)
    {
    break;
    }
    $i++;
    }
    ?>
    Это выполнит сложение лишь первых 100 чисел, а не первых 200000 (несмотря на условие цикла), так как когда $i достигнет 100, произойдет выполнение break, и, значит, выход из цикла.
    break "умеет" выходить с учетом вложенности циклов.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    по брейку он вылетает. ещё можно континуй делать.
     
  5. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Вроде понял.
    while($i<=200000) просто чтоб не отображать 200000 чисел а только нужное количество чисел нужно:

    Типо доходит до 100 чисел и цикл перестаёт работать правильно?
    $iSum+=$i;
    if($i==100)
    {
    break;
    }

    Добавлено спустя 4 минуты 40 секунд:
    Всёёёёёёё понял.
    Я просто щас писал этот код и говорил что я делаю.
    Получается если переменная $i равна 100 то выйти из цикла.
    Правильно?
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да

    Ещё можно брейкать сразу много, например break 3;
     
  7. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Это типо этого?
    <?PHP
    for($i=1;$i<=9;$i++)
    {
    for($j=1;$j<=10000;$j++)
    {
    echo($i*$j." ");
    if($j==9)
    {
    break(2);
    }
    }
    }
    ?>
     
  8. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    может начнёшь доку читать? =)
     
  10. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    <?php
    while (list($key, $value) = each($arr)) {
    if (!($key % 2)) { // пропуск нечетных чисел
    continue;
    }
    do_something_odd($value);
    }

    $i = 0;
    while ($i++ < 3) {
    echo "Снаружи<br />\n";
    while (1) {
    echo "В середине<br />\n";
    while (1) {
    echo "Внутри<br />\n";

    continue 3;
    }
    echo "Это никогда не будет выведено.<br />\n";
    }
    echo "Это тоже.<br />\n";
    }
    ?>

    Кароч я запутался, continue эти типо то что будет написано ниже определённого цикла не будет работать?
    Или как?
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    континуй это выход из данной итерации цикла и переход к следующей.
     
  12. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    А напишите пожалуйста пример continue маленький.
     
  13. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ты индийский язык учишь чтоли?
    С самого первого поста индусятиной прет.
     
  15. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Наверное xD.
    Я не могу понять, так всё сложно потому что первый раз или они так объясняют.
    Щас до функций дошёл.
    http://www.php.su/lessons/?lesson_3
     
  16. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Сложно потому, что лучше читать книги для новичков.
     
  17. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Foreach читай
     
  18. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Вы шарющий человек ;)
    Вот скажите читать книги о php 5 или продолжать что делаю.
    Просто одни говорят книги ничего не дадут, учись так "Как щас учусь".
    Другие говорят читай книги.
     
  19. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Просто стремись делать всё лучше чем вчера и понимать без размытостей. Читать до этого придётся всё подряд.