phpで日付によって重複しない要素(数字、文字)を並べる方法。
shuffle関数だと、毎回ランダムに並べられるから断念。
【参考サイト】
https://on-ze.com/archives/460
今回は7つの文字から3つを選ぶ。
$args = array('a','b','c','d','e','f','g');
//配列の個数を数える
$count_args = count($args);
//日付を得る
$seed = date("Ymd");
//日付によって乱数を初期化
mt_srand($seed);
//空配列を作る
$temp = array();
$copy_args = array();
//$argsの配列の中から3つ選び、$copy_argsの配列にコピーする
for ( $j = 0 ; $j < 3 ; $j++ ){
//初期化済みの乱数で配列の数値を一つ選ぶ。但し、配列は0から始まるので個数を-1する
$num_args = mt_rand( 0, $count_args-1 );
//得た数値の配列を$tempへコピーし、削除する
$temp = array_splice( $args, $num_args, 1 );
//$tempの配列を$copy_argsの配列の最後尾に追加
$copy_args = array_merge( $copy_args, $temp );
//配列の数値を一つ減らす
$count_args--;
}
//選ばれた配列$copy_argsを表示
<p><?php var_dump($copy_args); ?></p>
これで、その日のラッキーナンバーとか作れるな。