【PHP】const で定義した配列の項目を、条件により変更したい。

const 定数にて、設定情報を定義していたのですが、この中の項目を、条件によって書き換えたい。でも、そもそも const だから書き換えられない。そんな時の裏技です。

目次出力

やりたいこと

const SETTING = [
  "EVENT_DATE" => "2021-01-20", // ←これを書き換えたい!
  "EVENT_PLACE" => "tokyo",
];

正解

if (strtotime(date('Y-m-d H:i:s')) >= strtotime('2021-1-9 00:00:00')) {
  DEFINE('EVENT_DATE', "2021-01-25");
} else {
  DEFINE('EVENT_DATE', "2021-01-20");
}

const SETTING = [
  "EVENT_DATE" => EVENT_DATE, // ←条件により変わる
  "EVENT_PLACE" => "tokyo",
];

ダメだった方法

一先ずいろいろ試してみたけれど、ダメだった方法。

普通に書き換えようとする

const SETTING = [
  "EVENT_DATE" => EVENT_DATE, // ←条件により変わる
  "EVENT_PLACE" => "tokyo",
];

if (strtotime(date('Y-m-d H:i:s')) >= strtotime('2021-1-9 00:00:00')) {
  SETTING['EVENT_DATE'] = "2021-01-25";
}

const 定義時に変数を使おうとする

$event_date = "2021-01-20";
if (strtotime(date('Y-m-d H:i:s')) >= strtotime('2021-1-9 00:00:00')) {
  $event_date = "2021-01-25";
}

const SETTING = [
  "EVENT_DATE" => $event_date,
  "EVENT_PLACE" => "tokyo",
];

const 定義時に三項演算子を使ってみる

const SETTING = [
  "EVENT_DATE" => (strtotime(date('Y-m-d H:i:s')) >= strtotime('2021-1-9 00:00:00')) ? "2021-01-20" : "2021-01-25",
  "EVENT_PLACE" => "tokyo",
];
ナカタケワークス

福岡の小さな会社専用のITフリーランスです。シンプルで、地球に優しい IT 環境を。