- 締切済み
txtファイル読込みで関連させる方法
サブサブカテゴリ登録フォームで悩んでいます。前回、私のソース記載部分が間違っていましたので再度投稿させていただきます。 下記のtxtファイル内容をカテゴリ登録フォームで読み込みます。 $ITEMCATE = 'カテゴリ1*カテゴリ2*カテゴリ3'; $ITEMCATE2 = 'サブカテゴリ1%サブカテゴリ2*サブカテゴリ3*'; $ITEMCATE3 = 'サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3'; (*は階層を下げます。%は同階層内で下げます) 現在は下記のソース(ITEMCATE部分は省略)で @SUBCATE = split(/\*/, $ITEMCATE2);#*で区切る $count = 0; while(@SUBCATE[$count]) { if(@SUBCATE[$count] eq $in{'cate2'}) { $NO = $count; last; } $count++; } @SUBSUBCATE = split(/\*/, $ITEMCATE3);#*で区切る $ITEM3CATEOP = ""; $count = 0; while($count < @ITEMCATE3) { $ITEM3CATEOP .= "<OPTION>@ITEMCATE3[$count]"; $count++; } 上記ソース内容の関連性は*で区切る為、下記のようになります。 サブカテゴリ1%サブカテゴリ2は サブサブカテゴリ1%サブサブカテゴリ2と関連。 下記のように関連させる点で悩んでいます。↓ サブカテゴリ1%サブカテゴリ2は サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3と関連させる方法。 ご教授お願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Tacosan
- ベストアンサー率23% (3656/15482)
まず本題からいくと, ハッシュや配列のリファレンスを使って適切なデータ構造を作るしかないんじゃないかなぁ. つまり, 「カテゴリ1 の下にサブカテゴリ1 とサブカテゴリ2 があり, そのうちサブカテゴリ1 の下にはサブサブカテゴリ1 とサブサブカテゴリ2 がある」という情報を, うまくハッシュや配列のリファレンスによって記憶しておくって方策を考えるべきでしょう. あんまりモチベーションがあがらないので方針だけですが. でついでに指摘しておくけど, 表現が変. 「サブカテゴリ1%サブカテゴリ2の下位サブサブカテゴリ」って, 何を言っているの? カテゴリ1 の下のサブカテゴリ1, サブカテゴリ2 があるという構図はわかったんだけど「サブカテゴリ1%サブカテゴリ2の下位サブサブカテゴリ」はサブカテゴリ1 の下にあるのか, サブカテゴリ2 の下にあるのかがわかりません.
- Tacosan
- ベストアンサー率23% (3656/15482)
配列の要素を参照するのに @ を使うのはやめた方がいいと思います... って前も書いたような気がする. で, 「関連させる」ってどういう意味?
補足
ご回答いただきありがとうございます。 関連ではなく、「該当させる」と表現したほうがよさそうですね。すみません。 txtファイル内のカテゴリを表示した場合、下記のようになります。 カテゴリ1 サブカテゴリ1 サブサブカテゴリ1 サブサブカテゴリ2 サブカテゴリ2 サブサブカテゴリ3 カテゴリ2 サブカテゴリ3 カテゴリ3 上記のようにカテゴリ階層表示は先日解決することができました。 今回はカテゴリを登録するスクリプト内容で悩んでいます。 例えばサブカテゴリ1%サブカテゴリ2の下位サブサブカテゴリを登録する際のフォームで下記のように入力します。 サブサブカテゴリ1%サブサブカテゴリ2*サブサブカテゴリ3 これを入力しtxtファイルにデータを書き出します。データは正常に上書きされます。その後、再度サブカテゴリ1%サブカテゴリ2内のサブサブカテゴリデータを登録するフォームをひらくと下記のように表示されます。 サブサブカテゴリ1%サブサブカテゴリ2 *以降はカテゴリ2下位のサブカテゴリ3の該当サブサブカテゴリ3となります。 @SUBSUBCATE = split(/\*/, $ITEMCATE3); # *で区切っているためです。 サブカテゴリ1%サブカテゴリ2に該当するサブサブカテゴリは*があっても表示するようにしたいのですが・・ サブカテゴリ内の%の先頭から数えた数とサブサブカテゴリ内の*の数を数えて表示するスクリプトの書き方がわかりません。 何卒、ご教授お願いいたします。