0

サブカテゴリをカテゴリ内にグループ化したい。サブカテゴリには、次のような要素をいくつでも含めることができます。

出力:

category #1
    item 1 
    item 2
    item 3

category #2
   item 1 
   item 2
   item 3
   item 4
   item 5

私の最初の計画は、次のような多次元配列を使用することです。

$categories = array(
'cateogy_name_1' => array(
    1 => 'item_1',
    2 => 'item_2',
    ...
),
'cateogy_name_2' => array(
    1 => 'item_1',
    2 => 'item_2',
    3 => 'item_3',
    4 => 'item_4',
    5 => 'item_5',

    ...
),
....
);

これまでの私のコード...

$categories = array();
$result= mysql_query("SELECT category_id, product_name  FROM `table` GROUP BY     
`catagory_id` ORDER BY `catagory_id`");  //retreive all categories and sub-categories

while($row = mysql_fetch_array($result))
 {
    //Get Categories and create arrays inside a single array
    //I'm stuck here, not sure how to initialize the multi-dimensional array
 }

foreach // Put all subcategories within the correct categories

        // I'm stuck here. How would I get the subcategories and put 
        // them into the correct category?

さて、私の質問は次のとおりです。

  1. カテゴリを選択して、多次元配列内の独自の配列に配置するにはどうすればよいですか?

  2. 次に、サブカテゴリを適切なカテゴリ配列内に配置するにはどうすればよいですか?

  3. 最後に、任意の数のサブカテゴリを持つことができる多次元配列全体を印刷するにはどうすればよいですか?

4

2 に答える 2

2

最初に、1 つのクエリですべてのサブカテゴリとカテゴリを取得する必要があります。

SQL:

SELECT     sub_category_id, 
           category_id,
           sub_category_name,
           category_name           
FROM       sub_categories a
INNER JOIN categories b
    ON     a.category_id=b.category_id

PHP:

$categories = array();
while ($row = mysql_fetch_assoc($result)) {
    $cat_name = $row['category_name'];
    $sub_cat_id = $row['sub_category_id'];
    $sub_cat_name = $row['sub_category_name'];
    $categories[$cat_name][$sub_cat_id] = $sub_cat_name;
}

var_dump($categories);
于 2012-12-01T03:41:26.437 に答える
0

mysql_*注: 非推奨の関数は使用しないでください。代わりにPDOなどを使用してください。

$categories = array();
while($row = mysql_fetch_assoc($result))
{
    $cat = $row['category_id'];
    $categories[$cat][] = $row['product_name'];
}

そのように?

于 2012-12-01T02:07:03.550 に答える