4

4 つの HTML リスト アイテムのセットがあり、週に 1 回表示される順序をシャッフルしたいと考えています。誰かがこれに対する素敵でエレガントな解決策を持っているかどうか疑問に思っていましたか?

いつものように、皆様からのご意見をお待ちしております。

アップデート:

残念ながら、必要な .htaccess オーバーライドを使用しても、悲しいことにこの特定のサーバーで動作する srand() ベースのソリューションを取得できませんが、代わりに使用できる次のものがあります。現時点では、1 つのリスト項目しか返されません。 -必要な4つを表示するように変更するにはどうすればよいですか? 繰り返しますが、どんなアイデアでも感謝して受け取ります:)

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);
4

1 に答える 1

2

これは、データベースに値を保存したり、cronjobs を設定したり、その他の退屈なものを設定したりすることを含まない、シンプルでかなりエレガントなソリューションだと思います。

リスト要素が にあるとしましょう$array:

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

これで配列がシャッフルされ、次の月曜日まで同じようにシャッフルされます。

ただし、これには問題があります。Suhosin パッチ (デフォルトで Debian にインストールされています) では機能しません。それでも、それがわかったdate('W')ので、自分で別の解決策を考え出すのは簡単です.

編集: 独自の疑似乱数ジェネレーターを実装したくないが、Suhosin がインストールされている場合は、次の行を に追加できます.htaccess

php_value suhosin.srand.ignore 0

于 2011-09-19T09:48:25.817 に答える