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

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

ただいまの
回答率

90.37%

  • PHP

    22512questions

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

  • EC-CUBE

    305questions

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

array_mergeの使い方

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 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つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。

    キャンセル

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


でも行けるかも?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • PHP

    22512questions

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

  • EC-CUBE

    305questions

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