2012-12-01 45 views
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. 最后,我如何打印出一个可以有多个子类别的整个多维数组?

回答

2

你应该先把所有的子类别和类别上一个查询:

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); 
0

注意:你不应该使用过时的mysql_*功能。使用PDO或类似的东西。

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

那样?