За последние 24 часа нас посетили 17778 программистов и 1648 роботов. Сейчас ищут 1788 программистов ...

рандомная выдача (странное поведение)

Тема в разделе "PHP для новичков", создана пользователем Alex_ST, 31 июл 2012.

  1. Alex_ST

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

    С нами с:
    5 дек 2011
    Сообщения:
    23
    Симпатии:
    0
    Доброго времени!
    использую в скрипте функцию:
    Код (Text):
    1.  
    2. function random($filename) {                                
    3.  $lines = file($filename);
    4.  return $lines[array_rand($lines)];
    5.  }
    она работает в цикле, так вот почему то она постоянно тянет из файла не совсем рандомно.
    Вот пример:
    Файл из 74 строк, в скрипте рандом выдается так
    57
    31
    25
    5
    22
    26
    20
    и сново
    57
    31
    25
    и т.д.
    т.е. первые 8 раз все дергается рандомно, а затем это становится циклично. И собственно сами повторы, их цикличность в данном случае 8, может изменяться от количества строк в файле.

    Была попатка выхода из ситуации такой функцией:
    Код (Text):
    1.  
    2. function random($filename) {                                
    3.  $lines = file($filename);
    4.  shuffle($lines);
    5.  return $lines[0];
    6.  }
    единственное изменился промедуток цикличности с 8 до 69. В чем дело немогу понять.
    На машине установлен апач и пхп 5.0.4 OC Windows 7

    Может кто подскажет куда порыть или в чем проблема.
    Отдельно сама по себе функция, если ее запускать не в цикле, а выводить резельтат чрез echo и обновлять страницу F5 будет работать нормально, а вот в цикле скрипта работает почему то так странно.
     
  2. VampiR_WAR

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

    С нами с:
    19 авг 2009
    Сообщения:
    409
    Симпатии:
    1
    Адрес:
    Нижний Новгород
    Код (PHP):
    1. <?php
    2. $numbers = range(1, 20);
    3. shuffle($numbers);
    4. foreach ($numbers as $number) {
    5.     echo "$number ";
    6. }
    7. ?>