1

我有两个 MySQL 表、products 和 prodGroups。我需要以这种关联数组的格式检索以下数据:

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 )

以上是自由编写的,因此显然对于 assoc 数组而言 print_r 的格式不正确,但希望您能理解。

我无法理解从其 prodGroup 值与产品组 1/2/3 的名称匹配的 MySQL 表中检索项目。我希望属于特定产品组的项目与其合法的父数组分开。

我不是最擅长解释的,希望我所写的足以指出我的问题。但是,总而言之,如果您仍然迷路,我需要 Item 1&2&3 是数组中 Product Group 1 的一部分。

伪代码会很棒,我有一种感觉,需要 foreach 循环,我完全迷失了它的结构。

4

1 回答 1

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;
}
于 2013-04-29T15:45:51.967 回答