我需要从MySQL结果集中存储,检索和创建一个列表,其中一些项目出现在多个位置,它还需要将新项目默认到列表的末尾,因此最好不要控制它使用单独的表。
Product Position
Prod1 1 3
Prod2 2
创建列表
这似乎有点矫枉过正,但我找不到另一种方法可行。如果我从MySQL结果集转到数组,我怎么能将具有多个位置的项目分解为代表我的列表的新数组项?
答案 0 :(得分:0)
$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);
答案 1 :(得分:-1)
您需要两个表格。第一个producs
,其ID和名称为
id name
1 Prod1
2 Prod2
您还需要列表的顺序。也许是这样的
list
id items
1 1,2,1
如果要打印ID为1的列表,请从数据库中获取项目并执行explode(',', $items);
。现在获取每个项目ID的名称。如果您没有很多产品,请立即获取所有产品并将其存储在阵列中以便更快地访问。
<强>更新强>
这不是一个好的设计,但如果你想把它放在一个表中:
id name lists
1 Prod1 1:1,1:3
2 Prod2 1:2
其中列表包含list_id:position,[list_id:position], ...
。但要查看列表,您必须获取所有产品并检查它是否在列表中1.创建一个位置=&gt;的数组product_row因此您可以使用ksort()
。