Hello everyone I hope you all having a great weekend... I have the following problem I have spend almost tow days trying to figure it out... I have an SQL query to pull data from database, the result is a Multidimensional array as stdClass Object... which looks like this
Array
(
[0] => stdClass Object
(
[category_id] => 81
[category_name] => 369-1006-0
[published] => 1
[category_parent_id] => 8
[category_child_id] => 81
)
[1] => stdClass Object
(
[category_id] => 80
[category_name] => 369-1007-0
[published] => 1
[category_parent_id] => 8
[category_child_id] => 80
)
[2] => stdClass Object
(
[category_id] => 82
[category_name] => 369-1012-0
[published] => 1
[category_parent_id] => 8
[category_child_id] => 82
)
[3] => stdClass Object
(
[category_id] => 85
[category_name] => 369-1014-0
[published] => 1
[category_parent_id] => 8
[category_child_id] => 85
)
[........]
);
until this point I can simple use print_r() to dispatch the information as per request by the API... or echo's while's foreach's .... to display that information for easy reading... but the problem is that I can't group them by ID's ... please allow me...
This array are categories and each category as you have guess it they have sub-categories but the categories and sub-categories are associated using a second table so... [Table 1] has all the information about the categories, and [Table 2] has the association, my query join them together so that I can get a single "virtual table"... and the result I get is that multidimensional nightmare.... the idea is to group them in categories with their sub-categories, now here is the catch ...
as you can see in that array I have [category_parent_id] in each group all of them have a value as 1,2,3,4,5... and this values repeat them self per group... as you can see in this little example... so, every [category_parent_id] with the value of 0 is the main category and the rest are sub-categories
This is how my virtual table Table looks like
[category_id] [category_name] [category_parent_id]
1 item 1 0
2 item 2 0
3 item 3 1
4 item 4 1
5 item 5 2
6 item 6 3
7 item 7 2
8 item 8 2
// This is the main idea to group them using the multidimensional array aka nightmare
Item 1
|_item 3
|_item 4
Item 2
|_item 5
|_item 7
|_item 8
This are my useless attempts:
Attempt 1
$cc = 0;
foreach ($results as $obj_key => $cc){
$cc++
$catsname = $obj->category_name;
$catid = $obj->category_id;
$subcatid = $obj->category_parent_id;
echo $obj_key .' Name';
foreach($cc as $key=>$value)
{
echo $key . $value . '<br> ';
}
echo '<br>';
}
Attempt 2
$datasetCount = count($results);
echo "<h2>How many ccats? $datasetCount </h2>";
$i = 0;
foreach ($results as $categorias) {
$i++;
echo "<h2>Categoria $i</h2>";
while (list($key, $value) = each ($categorias)) {
echo "$key: $value<br />";
}
}
I have many more attempts but after my second day and multiple examples it seems that is not possible! which I refuse to believe...
Now, don't think I haven't try other solutions, I have, there is an easy way to do this without the array's I can always add another column to the Table 1 [cat_role] value [sub] : [main] that way I wont even use a second table... but there I am, asking my self, if I don't learn this technique what would happen when the rule is very clear tow or tree tables, one hold the data and the other hold the relations... I really really really need to learn this technique...
Any help would be greatly appreciated!. Thank you for taking the time to ready my mess...