array_mergeの使い方
- 評価
- クリップ 1
- VIEW 751

退会済みユーザー
EC-CUBEを使い、以下のことを実現しようとしています。
ユーザ名が店舗名と同一であり、さらに店舗名ごとにカテゴリが分かれている。各店舗には販売しているジャンルごとに親カテゴリを持っている。
例
食器
・店舗A
・店舗B
家具
・店舗A
・店舗C
forでループを回しなんとか該当のカテゴリを取得することはできましたが、これを商品検索、商品登録、受注検索でカテゴリで絞った検索を行わせたい際にカテゴリの部分に表示させるため、複数の親カテゴリを持つ店舗の場合の配列結合の記述法についてご教示いただければ幸いです。
画面表示例
店舗Aの場合
食器
・店舗A
家具
・店舗A
店舗Bの場合
食器
・店舗B
今、以下のようにソースコードを作り子カテゴリとなるログインしている各店舗でそれぞれの店舗名のカテゴリは取得できていることをdumpして確認できております。
これを、forで回していくところまでかけたのですが、結合させる
array_mergeの部分がわかっていません。
array_mergeの使い方は調べたことで多少はわかるのですが、これとループを組み合わせた部分がわからずに詰まってしまっています。
$app = $this->app;
$name = $app['user']->getName();
$em = $app['orm.em'];
$categories = $em->getRepository('\Eccube\Entity\Category')->findBy(array('name'=>$name));
for ($i = 0; $i < count($categories); $i++) {
(ここの部分でarray_mergeするのかと思うのですが…)
}
ご教示いただける方がいましたら、ご教示いただけると幸いです。
よろしくお願いいたします。
追加
例:店舗Bの場合
0 => Category {#1724 ▼
-id: 10 -name: "店舗B"
-level: 2 -rank: 6
-create_date: DateTime {#1721 ▶}
-update_date: DateTime {#1722 ▶}
-del_flg: 0
-CategoryCount: null
-CategoryTotalCount: null
-ProductCategories: PersistentCollection {#1733 ▶}
-Children: PersistentCollection {#1735 ▶}
-Parent: Category {#1782 ▶}
-Creator: Member {#1374 ▶} }
店舗Aの場合は 店舗Aとして、食器に属している店舗Aと家具に属している店舗Aがあります。
0 => Category {#1735 ▼
-id: 11
-name: "店舗A"
-level: 2
-rank: 7
-create_date: DateTime {#1732 ▶}
-update_date: DateTime {#1733 ▶}
-del_flg: 0
-CategoryCount: null
-CategoryTotalCount: null
-ProductCategories: PersistentCollection {#1744 ▶}
-Children: PersistentCollection {#1746 ▶}
-Parent: Category {#1793 ▶}
-Creator: Member {#1792 ▶} } 1 => Category {#1789 ▼
-id: 13 -name: "店舗A"
-level: 2
-rank: 3
-create_date: DateTime {#1791 ▶}
-update_date: DateTime {#1790 ▶}
-del_flg: 0
-CategoryCount: null
-CategoryTotalCount: null
-ProductCategories: PersistentCollection {#1788 ▶}
-Children: PersistentCollection {#1786 ▶}
-Parent: Category {#1784 ▶}
-Creator: Member {#1792 ▶ …2} }
EC-CUBEとして、CategoryのエンティティクラスにgetPathメソッドがあり、ここからそれぞれの子カテゴリに対する親カテゴリを取得できるようなのでそこを使用して親カテゴリは取得する予定なのですが…
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
戻り値を見ても共通する値(家具なら、家具カテゴリを示す値)が見えないのが気になりますが…、
プログラムを組むならforeachとarray_pushの方が良さそうですね。こうすれば、店舗ごとに
取扱業種のIDだけ、$array_idに格納できます。
$array_id = array(); //カテゴリのIDを格納する配列
foreach($categories as $val ){
array_push($array_id,$val['カテゴリIDを取得するキー']); //カテゴリID
}
この値を使って、別のテーブルで検索をかけたいなら、implode関数を使うなりして、値をひとまとめにして、SQLのIN演算子を使えば簡単に検索できます。
追記、$val['カテゴリIDを取得するキー']は
$val -> getPath()
でも行けるかも?
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
質問への追記・修正、ベストアンサー選択の依頼
FKM
2016/06/23 10:48
変数$categoryがどんな値を返しているのか、問題の発生しない程度で、var_dumpしてもらって宜しいでしょうか。
別テーブルに対して条件一致検索するだけなら、敢えてarray_mergeする必要がないかも知れないです。
退会済みユーザー
2016/06/23 10:57
例:店舗Bの場合
0 => Category {#1724 ▼
-id: 10
-name: "店舗B"
-level: 2
-rank: 6
-create_date: DateTime {#1721 ▶}
-update_date: DateTime {#1722 ▶}
-del_flg: 0
-CategoryCount: null
-CategoryTotalCount: null
-ProductCategories: PersistentCollection {#1733 ▶}
-Children: PersistentCollection {#1735 ▶}
-Parent: Category {#1782 ▶}
-Creator: Member {#1374 ▶}
}
店舗Aの場合は
店舗Aとして、食器に属している店舗Aと家具に属している店舗Aがあります。
0 => Category {#1735 ▼
-id: 11
-name: "店舗A"
-level: 2
-rank: 7
-create_date: DateTime {#1732 ▶}
-update_date: DateTime {#1733 ▶}
-del_flg: 0
-CategoryCount: null
-CategoryTotalCount: null
-ProductCategories: PersistentCollection {#1744 ▶}
-Children: PersistentCollection {#1746 ▶}
-Parent: Category {#1793 ▶}
-Creator: Member {#1792 ▶}
}
1 => Category {#1789 ▼
-id: 13
-name: "店舗A"
-level: 2
-rank: 3
-create_date: DateTime {#1791 ▶}
-update_date: DateTime {#1790 ▶}
-del_flg: 0
-CategoryCount: null
-CategoryTotalCount: null
-ProductCategories: PersistentCollection {#1788 ▶}
-Children: PersistentCollection {#1786 ▶}
-Parent: Category {#1784 ▶}
-Creator: Member {#1792 ▶ …2}
}
EC-CUBEとして、CategoryのエンティティクラスにgetPathメソッドがあり、ここからそれぞれの子カテゴリに対する親カテゴリを取得できるようなのでそこを使用して親カテゴリは取得する予定なのですが…
kei344
2016/06/23 10:57
コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。