Массив. Случайный выбор

Gladiator

Новичок
Задача:
Изменять цвет ника у определенного юзера на форуме в теме
Для наглядности:
Вел в поле(gusercolors_global) цвета : зеленый, синий, красный.
Пример 1
Открыл тему. У пользователя на странице допустим три поста и цвет ника красный. Обновил - синий ник в трех постах. Т.е используется каждый раз один цвет.
Пример 2
Открыл тему. У пользователя на странице допустим три поста и цвет ника в трех постах разный(зеленый, синий, красный. ). если более трех постов просто по порядку цвета повторяет т.е зеленый, синий, красный.

Код для модуля. В модуле переменные не сохраняются поэтому надо через global.

PHP:
if (!(empty($this->registry->options['gusercolors_global'])))
       {
        $gusercolors = explode(',', $this->registry->options['gusercolors_global']);
       } 

if ($this->registry->options['gusercolors_rand'])
       {
         $current_color = $gusercolors[mt_rand(0, (count($gusercolors) +1))];
         $post[musername] = '<font color="'.$current_color.'">'.$post[musername].'</font>';
       }
> $current_color
это массивв нём хранятся связки типа Ключ -> Значение0 -> Красный1 -> Белый2 -> Чёрный

Сгенерированный случайно ключ $gusercolors[mt_rand(0, (count($gusercolors) -1))]

Ключ mt_rand(0, (count($grusercolors) -1))

Функция mt_rand(start, end) генерирует случайное число от start до end, в данном случае от 0 до count($grusercolors) -1

Функция count () подсчитывает количество элементов массива.

Мне не нужно каждый раз случайно генерировать

Мне надо либо 1 сгенировать и использовать, либо делать +1 - в каждом разе будет новый цвет по циклу.

В теории вроде бы понимаю, а реализовать бьюсь об стенку ((( Не подскажите решения?
 

Вурдалак

Продвинутый новичок
Во-первых, в «примерах» по сути нет входных данных. Просто утверждается: будет одинаковый, будет разный. Это называется как-то по-другому, а не «пример».

Во-вторых, для реализации повторения цвета достаточно использовать
PHP:
shuffle($grusercolors);

for($i = 0; $i < count($postList); $i++) {
    $color = $grusercolors[$i % count($grusercolors)];
}
 
Сверху