在PHP中分解MySQL结果集
我需要从MySQL结果集中存储、检索和创建一个列表,其中一些项出现在多个位置,它还需要在列表末尾默认新项,因此最好不要使用单独的表来控制它在PHP中分解MySQL结果集,php,mysql,arrays,Php,Mysql,Arrays,我需要从MySQL结果集中存储、检索和创建一个列表,其中一些项出现在多个位置,它还需要在列表末尾默认新项,因此最好不要使用单独的表来控制它 Product Position Prod1 1 3 Prod2 2 创建列表的步骤 Prod1Prod2Prod1 这似乎有些过分,但我找不到另一种可行的方法。如果我从一个MySQL结果集转换为一个数组,我如何将具有多个位置的项分解为表示我的列表的新数组项?您需要两个选项卡。第一个producs,带有id和名称 $data = array(
Product Position
Prod1 1 3
Prod2 2
创建列表的步骤
- Prod1
- Prod2
- Prod1
这似乎有些过分,但我找不到另一种可行的方法。如果我从一个MySQL结果集转换为一个数组,我如何将具有多个位置的项分解为表示我的列表的新数组项?您需要两个选项卡。第一个
producs
,带有id和名称
$data = array(
array('product' => 'prod 1', 'position' => '1 3'),
array('product' => 'prod 2', 'position' => '2'),
);
$data_ordered = array();
foreach ($data as $row) {
foreach (explode(' ', $row['position']) as $subrow) {
$data_ordered[$subrow] = $row['product'];
}
}
ksort($data_ordered);
var_dump($data_ordered);
id name
1 Prod1
2 Prod2
您还需要列表的顺序。也许像这样
list
id items
1 1,2,1
如果要打印id为1的列表。从数据库中获取项目并执行分解(',',$items)代码>。现在获取每个项目id的名称。如果您没有很多产品,请立即获取所有产品并将其存储在阵列中,以便更快地访问
更新
这不是一个好的设计,但如果您希望将其放在一个表中:
id name lists
1 Prod1 1:1,1:3
2 Prod2 1:2
其中列表包含
list\u id:position、[list\u id:position],…
。但要查看列表,您必须获取所有产品并检查其是否在列表1中。用position=>product\u行创建一个数组,这样您就可以使用ksort()
每个position只有一个产品?此外,是否有更多的位置在一行中以空格分隔?格式灵活,每个位置一个项目,但有些项目在多个子类别中,用户可以独立定义每个列表项目和子列表项目的顺序(拖放重新排序)但它没有说明的是,当添加Prod3时,它将不会出现在菜单上。旧系统手动控制菜单,因此项目必须在CMS中专门添加到菜单中,我想使其自动化,因此尝试将其保留在产品表中。最重要的是,一个产品可以分为多个子类别,并且每个项目的顺序都可以更改(例如,它不是字母顺序)向下投票?世界跆拳道联盟?有人真的知道如何阻止人们帮忙。今天结束stackoverflow…它不是一个单一级别的列表,而是一个产品可以出现多次的子类别,因此您不能将其添加到末尾。不过,这给了我一些思考的东西,类似的方法,但使用多行,每个子类别有一行。不是我投了反对票。这可能是因为你提供了另一种方法,但我对此持开放态度,试图回答问题而不仅仅是具体问题同样有效