- ベストアンサー
PHPで、相対的な変数名の場合のデータの扱い方
とても説明しずらいのですが、 例えば、ある処理によって連想配列データを受け取るという プログラムがあります。 $hoge = Array ( [deta1] => 大阪市 [deta2] => カツ丼 [deta3] => 男 ) このデータを利用して 出身:<?= $hoge[deta1] ?> 好物:<?= $hoge[deta2] ?> 性別:<?= $hoge[deta3] ?> のようなことを施すわけですが、ここで問題なのは[deta1]という連想配列名が 絶対的な名前ではなく、出力結果によって相対的に変わってしまうという点なんです。 つまり、ある日処理項目を足して $hoge = Array ( [deta1] => 大阪市 [deta2] => 釣り [deta3] => カツ丼 [deta4] => 男 ) のようになった場合 出身:<?= $hoge[deta1] ?> 好物:<?= $hoge[deta2] ?> 性別:<?= $hoge[deta3] ?> では、おかしくなってしまい、 ズレてきてしまうのです。 もちろん本来なかったデータを追加するわけですから 最終的に、表示部分も取得した出力結果に応じて いじらないといけないわけですが、 何十、何百という配列数、しかも多次元配列とかになってきたら ひとつ追加しただけで、表示部分への影響が 大規模になってきますし、管理もしづらくなってきます。 そこで、このような相対的な連想配列名を扱う場合の 表示処理部分が管理しやすく、影響を受けにくい設計があれば、 アドバイスをお願い致します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これはデータベースで例えると、フィールドだけが増えていくという事ですか?それともレコードも増えていくのですか? フィールドだけなら、ANo.1さんのように $hoge["出身"] $hoge["趣味"] $hoge["好物"] $hoge["性別"] が一番管理しやすいのでは。 もし、レコードも増やすなら $hoge[deta1]["出身"] $hoge[deta1]["趣味"] $hoge[deta1]["好物"] $hoge[deta1]["性別"] $hoge[deta2]["出身"] $hoge[deta2]["趣味"] $hoge[deta2]["好物"] $hoge[deta2]["性別"] でしょう。
その他の回答 (2)
- php504
- ベストアンサー率42% (926/2160)
追加するなら $hoge = Array ( [deta1] => 大阪市 [deta2] => カツ丼 [deta3] => 男 [deta4] => 釣り ) にします
お礼
回答ありがとうございます。 参考にしてみます。
- yambejp
- ベストアンサー率51% (3827/7415)
そもそもdeta1・・・っていうのはどうやって動的に作成してるのでしょう? それが項目にどうやって紐づいているのでしょう? 一番単純なやりかただと 出身:<?= $hoge["出身"] ?> 好物:<?= $hoge["好物"] ?> 性別:<?= $hoge["性別"] ?> のような添字部分に項目名を指定してしまう手も・・・
お礼
回答ありがとうございます。 参考にしてみます。
お礼
回答ありがとうございます。 これなら、レコード、フィールド両方に対応できそうですね。