Еженедельная перестановка массива - PullRequest
4 голосов
/ 19 сентября 2011

У меня есть набор из 4 элементов списка HTML, и я бы хотел изменить порядок их появления раз в неделю.Мне было интересно, есть ли у кого-нибудь хорошее, элегантное решение для этого?

Как всегда, я был бы чрезвычайно благодарен за любой вклад, который вы могли бы иметь!1006 * К сожалению, даже с необходимыми переопределениями .htaccess, я просто не могу заставить какие-либо решения на основе srand () работать, к сожалению, на этом конкретном сервере, но имею следующее, которое можно использовать вместо этого - на данный момент он возвращает толькоэлемент списка - как я могу изменить его, чтобы показать четыре обязательных?Еще раз, любые идеи будут с благодарностью приняты:)

function RandomList($TimeBase, $QuotesArray){

    $TimeBase = intval($TimeBase);

    $ItemCount = count($QuotesArray);

    $RandomIndexPos = ($TimeBase % $ItemCount);

    return $QuotesArray[$RandomIndexPos];

}

$WeekOfTheYear = date('W'); 

$RandomItems = array(
    "<li><a href=\"#northern-germany\" title=\"Northern Germany\">North</a></li>","<li><a href=\"#southern-germany\" title=\"Southern Germany\">South</a></li>","<li><a href=\"#western-germany\" title=\"Western Germany\">West</a></li>","<li><a href=\"#eastern-germany\" title=\"Eastern Germany\">East</a></li>");

print RandomList($WeekOfTheYear, $RandomItems);

1 Ответ

2 голосов
/ 19 сентября 2011

Вот простое и, я полагаю, довольно элегантное решение, которое не включает в себя сохранение значений в базе данных, настройку cronjobs и другие скучные вещи вроде того.

Давайте представим, что у вас есть элементы спискав $array:

srand(date('W'));
shuffle($array);
srand();

Теперь ваш массив перетасовывается и будет перетасовываться таким же образом до следующего понедельника.

Однако есть проблема: он не работает сПатч Suhosin (установлен по умолчанию в Debian).Тем не менее, теперь, когда вы знаете о date('W'), вам будет легко придумать альтернативное решение самостоятельно.

РЕДАКТИРОВАТЬ: если вы не хотите реализовывать свой собственный генератор псевдослучайных чисел, но у вас установлен Suhosin, вы можете поместить следующую строку в .htaccess:

php_value suhosin.srand.ignore 0

...