2021.1.8
【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",
];