PHP

PHPのStdClassで動的なプロパティ名を扱う

記事内に商品プロモーションを含む場合があります

普段は連想配列派なのですが、既存のコードを触っていると StdClass のオブジェクトに遭遇することが時々あります。

それ自体は問題ないのですが、プロパティ(メンバー変数)が連番になっていたりするとループして初期化したくなります。

でも StdClass のプロパティって動的に扱うことができたっけ?っとよく忘れるので備忘録。

連想配列の場合

name_1 から name_5 の 5 つの値を例に考えてみましょう。

name_1 や name_2 には数値が入り、0 で初期化しておきたいと仮定します。

連想配列のループならキー名さえ動的に扱えればいいので以下のように定義できます。

キーの定義の仕方は人それぞれなので、自分のお気に入りの書き方か、プロジェクトの既存ソースに合わせておくといいでしょう。

結果はいずれも下の通りです。

StdClassの場合

StdClass の場合も以下のようにできるかな?やってみます。

これだと下のような結果になってしまいます。

StdClass の場合はプロパティ全体を {} で囲む必要があります。

このように定義すれば思った通りの結果になります。