Hi, I have setup the following array called list_categories which is in the format $list_categories[sub_category_id][category_id], ie say it has the following content:
What I want to be able to do is loop through the array and display the categories in a list. So far I have put together the following code which loops through every category and displays its sub categories fine.
But say I was in a specific category ie category_id = 1 i want to limit it to:
- cat 1 (category_id = 1, sub_category_id = 0)
- sub cat 1 (category_id = 2, sub_category_id = 1)
- sub cat 2 (category_id = 3, sub_category_id = 1)
- cat 2 (category_id = 4, sub_category_id = 0)
- cat 3 (category_id = 5, sub_category_id = 0)
and if category_id = 8 it would be
- cat 1 (category_id = 1, sub_category_id = 0)
- cat 2 (category_id = 2, sub_category_id = 0)
- cat 3 (category_id = 3, sub_category_id = 0)
- sub cat 1 (category_id = 4, sub_category_id = 3)
- sub sub cat 1 (category_id = 4, sub_category_id = 4)
- sub sub cat 2 (category_id = 5, sub_category_id = 4)
- sub cat 2 (category_id = 6, sub_category_id = 3)
- cat 4 (category_id = 7, sub_category_id = 0)
I hope you can see the pattern now, basically I want to limit the loop to only show the results for the current category it is in.
I would appreciate it alot if someone could help. Thanks
Code:
Array
(
[0] => Array
(
[0] => Array
(
[category_id] => 27
[sub_category_id] => 0
[category_name] => dsg
[description] => dfsg
[display_order] => 0
[status] => 1
)
[1] => Array
(
[category_id] => 28
[sub_category_id] => 0
[category_name] => afs
[description] => dasfd
[display_order] => 0
[status] => 1
)
)
[27] => Array
(
[0] => Array
(
[category_id] => 29
[sub_category_id] => 27
[category_name] => dsdaf
[description] => asf
[display_order] => 0
[status] => 1
)
)
)
What I want to be able to do is loop through the array and display the categories in a list. So far I have put together the following code which loops through every category and displays its sub categories fine.
Code:
function get_select_categories($category_id, $prefix) {
$select_categories = array();
if (array_key_exists($category_id, $GLOBALS['list_categories'])) {
foreach ($GLOBALS['list_categories'][$category_id] as $category) {
$category['category_name'] = $prefix . $category['category_name'];
$select_categories[] = $category;
$select_categories = array_merge($select_categories, get_select_categories($category['category_id'], $prefix . ' '));
}
}
return $select_categories;
}
echo '<ul>';
foreach (get_select_categories(0, '') as $category) {
echo '<li>' . $category['category_name'] . '</li>';
}
echo '</ul>';
But say I was in a specific category ie category_id = 1 i want to limit it to:
- cat 1 (category_id = 1, sub_category_id = 0)
- sub cat 1 (category_id = 2, sub_category_id = 1)
- sub cat 2 (category_id = 3, sub_category_id = 1)
- cat 2 (category_id = 4, sub_category_id = 0)
- cat 3 (category_id = 5, sub_category_id = 0)
and if category_id = 8 it would be
- cat 1 (category_id = 1, sub_category_id = 0)
- cat 2 (category_id = 2, sub_category_id = 0)
- cat 3 (category_id = 3, sub_category_id = 0)
- sub cat 1 (category_id = 4, sub_category_id = 3)
- sub sub cat 1 (category_id = 4, sub_category_id = 4)
- sub sub cat 2 (category_id = 5, sub_category_id = 4)
- sub cat 2 (category_id = 6, sub_category_id = 3)
- cat 4 (category_id = 7, sub_category_id = 0)
I hope you can see the pattern now, basically I want to limit the loop to only show the results for the current category it is in.
I would appreciate it alot if someone could help. Thanks