| 
	
 | 
 Posted by deko on 02/27/07 09:59 
I need to loop through a number of categories (in object $category) and compare  
items (from object $itemdata) to create a list of items organized by category. 
 
foreach ($category as $cat_item) 
{ 
   echo $cat_item->cat_name; 
   foreach ($itemdata as $item_datum) 
   { 
       if ($item_datum->category_id == $cat_item->cat_id) 
      { 
         echo '--'.$item_datum->item_name; 
      } 
   } 
} 
 
The output should look something like this: 
 
Apples (cat_name) 
 -- red (item_name) 
 -- green 
 -- small 
 -- large 
 
Oranges 
 -- ripe 
 -- rotten 
 
The $category and $itemdata objects are created using ezSQL: 
 
$category = $db->get_results("SELECT cat_id, cat_name ... FROM Table_A"); 
 
$itemdata = $db->get_results("SELECT category_id, item_name ...  FROM Table_B"); 
 
My question is this: 
 
How do I optimize this? 
 
Once an $item_datum->category_id has been matched to a $cat_item->cat_id, I no  
longer need that row ($item_datum) in the $itemdata object, so further  
iterations of the nested foreach loop need not include the previously matched  
$item_datum. 
 
How do I remove the matched $item_datum from the $itemdata object after it has  
been matched? 
 
Will this reduce iterations of the nested foreach loop? 
 
Thanks in advance.
 
  
Navigation:
[Reply to this message] 
 |