phpで日付によって重複しない要素を並べる


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>

これで、その日のラッキーナンバーとか作れるな。

コメントを残す

メールアドレスが公開されることはありません。

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください