【发布时间】:2011-06-08 22:57:48
【问题描述】:
目前,我已从 SELECT 检索数据并转换为 PHP assoc 数组。因此,我得到了这个数组。
[0] => array
(
[Gattung] => 'Gattung_A'
[Untergattung] => null
[Sektion] => null
[Untersektion] => null
[Serie] => null
[Unterserie] => null
[Art] => 'Art_A'
[Unterart] => null
[Varietaet] => null
[SubVarietaet] => null
[Form] => 'Form_A'
[Unterform] => null
[SpezialForm] => null
[Hybride] => null
[Blendling] => null
[Sorte] => null
)
[1] => array
(
[Gattung] => 'Gattung_A'
[Untergattung] => null
[Sektion] => null
[Untersektion] => null
[Serie] => null
[Unterserie] => null
[Art] => 'Art_B'
[Unterart] => null
[Varietaet] => 'Variant_G'
[SubVarietaet] => null
[Form] => 'Form_B'
[Unterform] => null
[SpezialForm] => null
[Hybride] => null
[Blendling] => null
[Sorte] => null
)
[2] => array
(
[Gattung] => 'Gattung_B'
[Untergattung] => null
[Sektion] => null
[Untersektion] => null
[Serie] => null
[Unterserie] => null
[Art] => 'Art_C'
[Unterart] => null
[Varietaet] => 'Variant_A'
[SubVarietaet] => null
[Form] => null
[Unterform] => null
[SpezialForm] => null
[Hybride] => null
[Blendling] => null
[Sorte] => null
)
.........
Nearly ~300k records
到目前为止,我已经使用array_unique 将我的数组固定为基于唯一值的一维数组。这是我的结果:
(
[0] => 'Gattung|Gattung_A'
[1] => 'Art|Art_A'
[3] => 'Form|Form_A'
[5] => 'Art|ArtB'
[7] => 'Varietaet|Variant_G'
[9] => 'Form|Form_G'
[11] => 'Gattung|Gattung_B'
[13] => 'Art|Art_C'
[15] => 'Varietaet|Variant_A'
}
但是,我的结果没有很好地分组。我需要将其显示在页面上,因此类似于构建分层系统。
问题: @Melsi 我希望我的第二次编辑能净化我的问题。
如何将数据显示到树中 表格(见编辑 2)或表格(见编辑 1)?
谢谢。
编辑 1:
我正在做的是在几个表中创建类似 FULLTEXT 搜索的内容。这是连接所有表的查询: (所有 FK 对每个表的 id 都有索引)
SELECT
tGa.Gattung AS Gattung,
tUG.Untergattung AS Untergattung,
tSe.Sektion AS Sektion,
tUS.Untersektion AS Untersektion,
tSer.Serie AS Serie,
tUser.Unterserie AS Unterserie,
tA.Art AS Art,
tUa.Unterart AS Unterart,
tV.Varietaet AS Varietaet,
tSV.SubVarietaet AS SubVarietaet,
tF.Form AS Form,
tUF.Unterform AS Unterform,
tSF.SpezialForm AS SpezialForm,
tH.Hybride AS Hybride,
tBL.Blendling AS Blendling,
tSo.Sorte AS Sorte
FROM
botanischername AS tBot
LEFT JOIN ( gattung AS tGa ) ON ( tBot.ID_Ga = tGa.ID_Ga )
LEFT JOIN ( untergattung AS tUg ) ON ( tBot.ID_UG = tUg.ID_UG )
LEFT JOIN ( sektion AS tSe ) ON ( tSe.ID_Se = tBot.ID_Se )
LEFT JOIN ( untersektion AS tUS ) ON ( tUS.ID_US = tBot.ID_US )
LEFT JOIN ( serie AS tSer ) ON ( tSer.ID_Ser = tBot.ID_Ser )
LEFT JOIN ( unterserie AS tUSer ) ON ( tUser.ID_USer = tBot.ID_USer )
LEFT JOIN ( art AS tA ) ON ( tA.ID_A = tBot.ID_A )
LEFT JOIN ( unterart AS tUa ) ON ( tUa.ID_UA = tBot.ID_UA )
LEFT JOIN ( varietaet AS tV ) ON ( tV.ID_V = tBot.ID_V )
LEFT JOIN ( subvarietaet AS tSV ) ON ( tSV.ID_SV = tBot.ID_SV)
LEFT JOIN ( form AS tF ) ON ( tF.ID_F = tBot.ID_F )
LEFT JOIN ( unterform AS tUF ) ON ( tUF.ID_UF = tBot.ID_UF )
LEFT JOIN ( spezialform AS tSF ) ON ( tSF.ID_SF = tBot.ID_SF )
LEFT JOIN ( hybride AS tH ) ON ( tH.ID_H = tBot.ID_H )
LEFT JOIN ( blendling AS tBL ) ON ( tBL.ID_BL = tBot.ID_BL )
LEFT JOIN ( sorte AS tSo ) ON ( tSo.ID_So = tBot.ID_So )
LEFT JOIN ( status AS tST
CROSS JOIN pflanze AS tPfl) ON
( tST.ID_ST = tBot.ID_ST AND tPfl.ID = tBot.ID )
WHERE
tGa.Gattung LIKE #1_Word# OR
tUG.Untergattung LIKE #2_Word# OR
tSe.Sektion LIKE #3_Word# OR
tUS.Untersektion LIKE #4_Word# OR
tSer.Serie LIKE #5_Word# OR
tUser.Unterserie LIKE #6_Word# OR
tA.Art LIKE #7_Word# OR
tUa.Unterart LIKE #8_Word# OR
tV.Varietaet LIKE #9_Word# OR
tSV.SubVarietaet LIKE #10_Word# OR
tF.Form LIKE #11_Word# oR
tUF.Unterform LIKE #12_Word# OR
tSF.SpezialForm LIKE #13_Word# oR
tH.Hybride LIKE #14_Word# oR
tBL.Blendling LIKE #15_Word# OR
tSo.Sorte LIKE #16_Word#
我知道使用LIKE %xxx% OR 是一个繁重的过程。如果您想建议我另一种方式,那很好。
我的预期结果是这样的:
________________________________________________________________________________
| | | |______________________________Detail_____________|
| Num | Gattung | Art | Form | Varietaet | ...... | the other cols|
|------|-------------|-------|-----------|------------|--------|---------------|
| 1. | Gattung A | Art A | Form A | | | |
| | | <same | Form B | | | |
| | | data or Art A> | | | | |
| | | Art B | Form B | Variant G | | |
| 2. | Gattung B | Art C | | Variant A | | |
-------------------------------------------------------------------------------
Back 1 2 3 Next
编辑 2:简明问题。
或者以树的形式,
----- Art A ------ Form A
| |
| -- Form B
1. Gattung A ----|---- Art B ------ Form B ---- Variant G
2. Gattung B --------- Art C ------ Variant A
... And so on.
【问题讨论】:
-
当你说“目前,我有一个从 SELECT 检索并转换为 PHP assoc 数组的数据”——你能把你正在使用的代码放在上面吗?我会更改该代码——QUERY、php 或两者兼而有之。然后你就不必在以后的处理中那么繁重了。
标签: php arrays tree multidimensional-array