За последние 24 часа нас посетил 17601 программист и 1720 роботов. Сейчас ищут 1863 программиста ...

Помощь с циклом WHILE

Тема в разделе "PHP для новичков", создана пользователем DamaGe, 12 май 2015.

  1. DamaGe

    DamaGe Новичок

    С нами с:
    12 май 2015
    Сообщения:
    34
    Симпатии:
    0
    "PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor) - это распространенный язык программирования общего назначения с открытым исходным кодом. PHP сконструирован специально для ведения Web-разработок и его код может внедряться непосредственно в HTML."
    А теперь по теме...
    Я не хочу запустить цикл когда он остановлен, наоборот, остановить когда запущен, кнопкой как я понял не получится, хотя бы неким счетчиком, таймером, время которого тоже будет указываться через форме, в этом я был мой последний вопрос. Код выше.
    Поподробнее пожалуйста, если это будет намного легче, то почему бы и нет. Для начало нужно узнать что это такое, кроме того что пишут в википедии.
    Думал над тем, если сделать внутри функции While, адресацию к другой функции?
    Код (PHP):
    1. function nextfunc($param, $param2)
    2. {
    3. // и тут залепить условие (нажатие кнопки, счетчик...)
    4. //наше действие.
    5. }
    Конечно глупо, но мало ли, ведь цикл будет продолжаться, но действий происходить не будет, как я думаю, на сколько я знаю (догадываюсь), break'ом, который находится в другой функции не остановить цикл который стоит "выше"?!
     
  2. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    можно пропускать тело цикла если не выполняется какое-то условие
    Код (PHP):
    1. $skip = false; // признак пропуска тела цикла. временное "выключение" цикла. инициализируем в значении "не пропускать"
    2. $done = false; // признак завершения цикла. однозначный выход из цикла. инициализируем в значении "пока не надо выходить"
    3. while (true) { // начало тела условно бесконечного цикла
    4. if ($done) { break; } // завершение бесконечного цикла если $done заимело логически истинное значение
    5. if ($skip) { continue; } // пропуск текущей итерации цикла если $skip имеет логически истинное значение
    6.  
    7. // продолжение тела цикла, выполняемое бесконечное кол-во раз если $skip и $done позволяют до него дойти
    8. // тут можно отследить изменение внешнего состояния и принять решение об изменении значения переменных $skip и $done для пропуска/исполнения тела или завершения цикла соответственно
    9. } // граница бесконечного цикла
    10.  
    11.  
     
  3. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    нет, break должен находится не в функции выше, а в while.

    есть 2 варианта, ты будешь в форме отправлять число, сколько раз выполнится действие внутри:
    Код (PHP):
    1. $stop = 100; // допустим эта переменная приходит из формы
    2. $i = 0;
    3.  
    4. while($i < $stop)
    5. {
    6.     $i++;
    7.     
    8.     // а тут выполняем какое то действие, например:
    9.     echo '<div>'. $i .'</div>';
    10. } 
    можно и прикрутить время, допустим будет выполнятся только первые 100 мс, но там будет код чуть посложнее, надо каждый раз проверять сколько времени прошло, я не буду писать, у тебя есть познания, время что бы писать что все тут боги клавиатуры, лучше потрать его на изучение наипростейших конструкция языка, причем не только РНР но и кучи других, Си подобных.
     
  4. DamaGe

    DamaGe Новичок

    С нами с:
    12 май 2015
    Сообщения:
    34
    Симпатии:
    0
    под "выше" я имел ввиду саму функцию While.
    Вопрос мой, как взять из формы число? Читай пост выше! И как сложить 2 переменные числовые, ну с этим я разобрался. Да,да,да вы отправляли мне ссылки про формы и кнопки, но пару строк кода если не сложно))
    Так же проблема в том, что ставлю sleep(0.1) (мб из-за маленького ожидания) не запускается цикл, либо моментально останавливается, вот подскажите можно сделать так?
    Код (PHP):
    1. while($timer<данныеИзФормы)
    2. {
    3. func//действие
    4. $timer=$timer+0.1;
    5. sleep(0.1);
    6. }
    Допустим $timer = 10, то есть за 1 секунду скрипт прекратится. Указывая числа 40-50, 60-100, 100-200, скрипт все равно моментально останавливается.
     
  5. denis01

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

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

    DamaGe Новичок

    С нами с:
    12 май 2015
    Сообщения:
    34
    Симпатии:
    0
    На денвер я просто делаю, в итоге он будет стоять на хосте. Я вижу твой код, но мне нужно ожидание 0.1 секунды. Сервер мудреный, в начале идет отправка пароля, и дается что то типо "белого коридора" на время меньше секунд, и за это время ты должен успеть отправить команду:
    1.команда say_all
    2.само сообщение
    3.еще одна команда (перезапуск сервера)
     
  7. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    а зачем старт и стоп?
     
  8. DamaGe

    DamaGe Новичок

    С нами с:
    12 май 2015
    Сообщения:
    34
    Симпатии:
    0
    Там много команд
    массив которые поддерживает сервер "на плаву" + реклама, помощь
     
  9. denis01

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

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

    Добавлено спустя 35 секунд:
    так этот скрипт будут пользователи запускать или ты один?
     
  10. DamaGe

    DamaGe Новичок

    С нами с:
    12 май 2015
    Сообщения:
    34
    Симпатии:
    0
    Ну не я один точно, я уже забил на кнопку, мне бы таймер с ожиданием 0.1))
     
  11. denis01

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

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

    DamaGe Новичок

    С нами с:
    12 май 2015
    Сообщения:
    34
    Симпатии:
    0
    $stack_timer=$stack_timer + 0.1;
    Таким макаром $stack_timer будет увеличиваться на 0.1??
     
  13. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
  14. DamaGe

    DamaGe Новичок

    С нами с:
    12 май 2015
    Сообщения:
    34
    Симпатии:
    0
    Наконец то заработало) Спасибо.
     
  15. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    А еще можно коротко записать: $stack_timer+=0.1;
    Эффект будет тот же, но выглядит менее избыточно.