dポイントプレゼントキャンペーン実施中!

とても説明しずらいのですが、
例えば、ある処理によって連想配列データを受け取るという
プログラムがあります。

$hoge = Array
(
    [deta1] => 大阪市
    [deta2] => カツ丼
    [deta3] => 男

このデータを利用して
出身:<?= $hoge[deta1] ?>
好物:<?= $hoge[deta2] ?>
性別:<?= $hoge[deta3] ?>
のようなことを施すわけですが、ここで問題なのは[deta1]という連想配列名が
絶対的な名前ではなく、出力結果によって相対的に変わってしまうという点なんです。

つまり、ある日処理項目を足して

$hoge = Array
(
    [deta1] => 大阪市
    [deta2] => 釣り
    [deta3] => カツ丼
    [deta4] => 男


のようになった場合

出身:<?= $hoge[deta1] ?>
好物:<?= $hoge[deta2] ?>
性別:<?= $hoge[deta3] ?>

では、おかしくなってしまい、
ズレてきてしまうのです。

もちろん本来なかったデータを追加するわけですから
最終的に、表示部分も取得した出力結果に応じて
いじらないといけないわけですが、
何十、何百という配列数、しかも多次元配列とかになってきたら
ひとつ追加しただけで、表示部分への影響が
大規模になってきますし、管理もしづらくなってきます。

そこで、このような相対的な連想配列名を扱う場合の
表示処理部分が管理しやすく、影響を受けにくい設計があれば、
アドバイスをお願い致します。

A 回答 (3件)

これはデータベースで例えると、フィールドだけが増えていくという事ですか?それともレコードも増えていくのですか?


フィールドだけなら、ANo.1さんのように
$hoge["出身"]
$hoge["趣味"]
$hoge["好物"]
$hoge["性別"]
が一番管理しやすいのでは。
もし、レコードも増やすなら
$hoge[deta1]["出身"]
$hoge[deta1]["趣味"]
$hoge[deta1]["好物"]
$hoge[deta1]["性別"]
$hoge[deta2]["出身"]
$hoge[deta2]["趣味"]
$hoge[deta2]["好物"]
$hoge[deta2]["性別"]
でしょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
これなら、レコード、フィールド両方に対応できそうですね。

お礼日時:2008/10/29 22:05

追加するなら


$hoge = Array
(
    [deta1] => 大阪市
    [deta2] => カツ丼
    [deta3] => 男
    [deta4] => 釣り

にします
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にしてみます。

お礼日時:2008/10/29 22:06

そもそもdeta1・・・っていうのはどうやって動的に作成してるのでしょう?


それが項目にどうやって紐づいているのでしょう?

一番単純なやりかただと
出身:<?= $hoge["出身"] ?>
好物:<?= $hoge["好物"] ?>
性別:<?= $hoge["性別"] ?>
のような添字部分に項目名を指定してしまう手も・・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
参考にしてみます。

お礼日時:2008/10/29 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!