勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPにて指定した期間内のランダムな日付をn件生成し、日付順にソートした上で受け取る方法

  PHP

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"
}

 - PHP

  関連記事

PHPでPOST送信する際に多次元配列も送る方法

PHPでPOST送信する際に多次元配列も送りたかった。ただ普通に送ろうとするとO ...

PHPMailerでメールを送信する際にTLS / SSL暗号化させる方法

PHPMailerでメールを送信したところGmailで確認すると赤い鍵のようなア ...

PHPでOGPタグ(metaタグ)を簡単に取得できる「OpenGraph.php」の利用方法

PHPでOGPタグ(metaタグ)を取得する際、file_get_content ...

PHPでCSVファイルを出力する際に「①」や「㈱」等の環境依存文字が文字化けする対応方法

過去記事の方法を用いてPHPでCSVファイルを出力すると所々「?」という形に文字 ...

PHPでダミー画像(プレースホルダー画像)を表示する「PHP-Dummy-Image-Generator」の利用方法

先日JavaScriptでダミー画像(プレースホルダー画像)を表示する「Hold ...