エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【PHP】constの定数名を動的に変更して取得したい【761日目】

定数を定義した

class ClassName
{
    const PARAM_1 = 'a';
    const PARAM_2 = 'b';
}

でも、こんなふうに数値だけ差がある定数。

for ($i = 1;  $i <= 2; $i++) {
    $array[] = ClassName::PARAM_.$i;
}

みたいに定数を動的に取得をしたい。でも、この書き方は動かない。
どうするか。

constant関数を使う

定数を取得する関数constantを使う。

引数は文字列なので、文字列結合した結果を渡してやると良い。

for ($i = 1;  $i <= 2; $i++) {
    $array[] = constant('ClassName::PARAM_' . $i);
}

こんな感じ。

公式ドキュメント

https://www.php.net/manual/ja/function.constant.php