2013-04-29 24 views
1

我有兩個MySQL表,產品和prodGroups。我需要在一個關聯數組的格式來檢索以下數據:用PHP關聯數組檢索MySQL數據的僞代碼

Array ([0] => Product Group 1 => Item 1 
           => Item 2 
           => Item 3 
     [1] => Product Group 2 => Item 4 
           => Item 5 
           => Item 6 
     [2] => Product Group 3 => Item 7 
           => Item 8 
           => Item 9) 

以上是自由寫了這麼顯而易見,這並不是print_r的一個assoc命令陣列的格式是否正確,但希望你的想法。

我無法理解從其prodGroup值與產品組1/2/3的名稱匹配的MySQL表中檢索項目。我希望屬於特定產品組的項目與其合適的父數組分開。

我不是最好的解釋,希望我寫的是足以指出我的問題。但是,總而言之,如果您仍然遺失,則需要將數組1中的產品組1分開。

僞代碼會很好,我有一段時間的感覺,並且foreach循環是必需的,我完全失去了它的結構。

+0

*爲什麼*你需要在這種多維數組中的數據?你打算如何處理它?你可能會發現沒有必要轉換成這種形式......有[XY問題](http://meta.stackexchange.com/a/66378)再次發生? – eggyal 2013-04-29 15:42:42

+0

我有一個無序列表作爲菜單,每個列表項都標題爲產品組的名稱,然後是另一個無序列表,彈出我希望列出該產品組的所有項目的列表。 – user2324069 2013-04-29 15:47:53

回答

1

您可以通過以下兩種方法之一來解決此問題:

1)使用嵌套查詢。對於少量的數據,爲什麼不:

while($row = getNextProductGroup()) 
    $row->items = getItemsForGroup($row->ProductGroupId); 

2)如果你有大量的數據,這將是在性能上昂貴的,所以你需要一個更聰明的方法。只需將它們加在一起,並在PHP中選擇它:

$productGroups = []; 
while($row = getNextProductGroupAndItem()) { 
    if(!isset($productGroups[$row->ProductGroupId])) { 
     $row->items = []; 
     $productGroups[$row->ProductGroupId] = $row; 
    } 
    $productGroups[$row->ProductGroupId]->items[] = $row; 
}