質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

Q&A

1回答

2071閲覧

array_mergeの使い方

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

EC-CUBE

EC-CUBEは、主に日本国内で開発されているECコンテンツ管理システムです。ロックオン社のECKitを元にしてオープンソース化され、商品管理・受注管理・顧客管理・売上集計などECに特化した様々な機能を備えています。

0グッド

1クリップ

投稿2016/06/23 00:32

編集2016/06/23 02:28

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メソッドがあり、ここからそれぞれの子カテゴリに対する親カテゴリを取得できるようなのでそこを使用して親カテゴリは取得する予定なのですが…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FKM

2016/06/23 01:48

変数$categoryがどんな値を返しているのか、問題の発生しない程度で、var_dumpしてもらって宜しいでしょうか。 別テーブルに対して条件一致検索するだけなら、敢えてarray_mergeする必要がないかも知れないです。
退会済みユーザー

退会済みユーザー

2016/06/23 01: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 01:57

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
guest

回答1

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()

でも行けるかも?

投稿2016/06/23 02:31

編集2016/06/23 02:53
FKM

総合スコア3624

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問