За последние 24 часа нас посетили 84497 программистов и 44762 робота. Сейчас ищут 1544 программиста ...

rand

Тема в разделе "PHP для новичков", создана пользователем Bells1q1, 17 апр 2017.

  1. Bells1q1

    Bells1q1 Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    4
    Симпатии:
    0
    Доброго времени суток. php никогда не изучал, перешел по мере необходимости, увидев что он практически идентичен с языком, которым владею хорошо.
    Столкнулся с проблемой цикла for и функцией rand.

    PHP:
    1. for ($forNumb=0; forNumb<2; forNumb++)
    2. {
    3.     $echoRand = rand(0, 100);
    4.     echo $echoRand . "/";
    5. }
    По идее цикл выполняется 2 раза, вызывая функцию ранд, и выводя результат. Но на деле выходит что он вызывает функцию 1 раз и просто 2 раза выводит.

    Выдает такой результат:

    20/20/
    13/13/
    95/95/
    51/51/

    И так далее. Мне, естественно нужно получить 2 рандомных числа,
    например:
    17/92/
    85/11/

    И так далее.
    Подскажите, знающие люди, или ткните, что я делаю не так? =/
     
    #1 Bells1q1, 17 апр 2017
    Последнее редактирование: 17 апр 2017
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.971
    Симпатии:
    753
    Я бы для начала поставил знак доллара перед переменными
    Вот так: $forNumb
    --- Добавлено ---
    У меня твой код работает как надо с вышеуказанными исправлениями.
     
  3. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    PHP:
    1. <?php
    2. for ($forNumb=0; $forNumb<2; $forNumb++)
    3. {
    4.  
    5.     echo rand(0, 100). "/";
    6. }
    7. ?>
     
  4. Bells1q1

    Bells1q1 Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    4
    Симпатии:
    0
    А ну там стоит, просто не копировал код, а заново писал, упустил
    Если копировать кусок кода, то так:
    Код (Text):
    1.  for ($x=0; $x<2; $x++)
    2.                 {
    3.                      $rn = rand(0, 100);
    4.                      if($rc == 2 or $rc == 5 or $rc == 16)
    5.                      {
    6.                          echo "ms1".":/:";
    7.                      }
    8. elseif($rc == 7 or $rc == 9 or $rc == 22)
    9.                      {
    10.                          echo "ms2".":/:";
    11.                      }
    12. else
    13. {
    14.   echo "ms3".":/:";
    15. }
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    756
    Адрес:
    Татарстан
    Мне одному кажется что автор вообще случайное число то и не выводит?
     
  6. Bells1q1

    Bells1q1 Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    4
    Симпатии:
    0
    Нет, я его дальше использую для операторов, и в этом случае оно повторяется.
     
  7. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    @Bells1q1, так у тебя имя переменной в функции повторяется. Поэтому и значение перезаписывается. Пиши числа в массив и все будет ровно.
    --- Добавлено ---
    PHP:
    1. <?
    2. $arr = [];
    3. for ($forNumb=0; $forNumb<2; $forNumb++)
    4. {
    5.  
    6.     $arr[] .= rand(0, 100);
    7. }
    8.  
    9. echo $arr[0].'/';
    10. echo $arr[1].'/';
    11. ?>
     
    Bells1q1 и TeslaFeo нравится это.
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.971
    Симпатии:
    753
    Ты получаешь значение переменной из последней итерации цикла.
     
  9. Bells1q1

    Bells1q1 Новичок

    С нами с:
    17 апр 2017
    Сообщения:
    4
    Симпатии:
    0
    Спасибо