PHPにて指定した期間内のランダムな日付をn件生成し、日付順にソートした上で受け取る方法
PHPにて指定した期間内のランダムな日付を指定した数だけ生成し、さらに日付順にソートして配列で受け取りたいというケースがあった。以下に対応方法をメモ。
対応方法
ソースコード
<?php //開始日と終了日設定 $start = new Datetime('2024-01-01'); $end = new Datetime('2024-12-31'); //何件作成するか設定 $min = 0; $max = 5; $date_list = array(); while( $min < $max ){ //指定した期間内のランダムなタイムスタンプを取得 $timestamp = mt_rand($start->format('U'), $end->format('U')); $date = new Datetime(); $date = $date->setTimestamp($timestamp)->setTimezone(new DateTimeZone('Asia/Tokyo'))->format('Y-m-d'); if( !in_array($date, $date_list) ){ $date_list[] = $date; $min++; } } //日付順にソート array_multisort(array_map('strtotime', $date_list ), SORT_ASC, $date_list); var_dump($date_list);
出力例
上記ソースコードを実行した際の出力例は以下の通り。
array(5) { [0]=> string(10) "2024-03-06" [1]=> string(10) "2024-07-22" [2]=> string(10) "2024-09-26" [3]=> string(10) "2024-11-15" [4]=> string(10) "2024-12-11" }
関連記事
-
-
PHP8系で追加されたJIT(Just-In-Time)の設定方法
PHP8系でOPcacheの拡張機能としてJIT(Just-In-Time)とい ...
-
-
フォームからアップロードした画像にPHPで任意のテキストを追加する方法
以前フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を追加する記事 ...
-
-
PHPでExcelシートを出力する方法(PhpSpreadsheet)
PHPでエクセルシートを出力させたい。以前はPHPExcelを利用していたが現在 ...
-
-
CodeIgniter4でのメール送信方法(テキスト・HTMLメール)
CodeIgniter4.4.4でテキストメール及びHTMLメールを送信したい。 ...
-
-
phpdotenvライブラリを使用してPHPで.envファイルを読み込ませる方法
CodeIgniterを勉強していた際に各種設定は「.env」というファイルに記 ...