2016-05-06 35 views
0

我试图问前面这个问题,但并没有提供足够的信息...PHP - 如何组多维数组键和值

我拉出来的信息数据库。我拉的每一行看起来像这样,

{"group":"admin","center":"equipment","section":"bucket","tab":"overview"} 

我需要以下信息,“中心”,“部分”和“选项卡”。

目前,我使用“array_push”创建一个数组与这个信息。该代码看起来是这样,

for ($y=0;$y<count($infos);$y++){ 
    $templist = array(); 
    array_push($templist, $infos[$y]['center']); 
    array_push($templist, $infos[$y]['section']); 
    array_push($templist, $infos[$y]['tab']); 
    array_push($tempmasterlist, $templist); 

,并显示此当我使用json_encode()

[["center1","section1","tab1"],["center2","section1","overview"],["center1","section1","tab2"]] 

我需要生成的JSON看起来像这样,

{"center1":["section1",["tab1", "tab2"]],"center2":["section1",["tab3"]]} 

基本上,我想将其正确动态分组,以便轻松检索。 一个中心可以有多个部分,一个部分可以有多个标签。根据用户的不同,可能会有多个中心,部分或选项卡,因此我无法对任何内容进行硬编码。

任何帮助将不胜感激,我一直在推动自己的疯狂与循环和if语句小时...

+0

一个中心可以有多个部分吗? – Webeng

+0

是的,中心A可以有b,c和d部分。每个部分可以有多个选项卡。 – linuxisthebest33

+1

您确定所产生的json格式?不应该选项卡作为部分的后代? –

回答

2

你不需要array_push。您可以使用结果行中的相应列作为$tempmasterlist中的键。

foreach ($infos as $row) { 
    $tempmasterlist[$row['center']][$row['section']][] = $row['tab']; 
} 
+0

谢谢!这工作完美! – linuxisthebest33

+0

有趣,所以如果我有'$ templist = array()',那么通过做'$ templist ['hello'] ['my'] ['buddy'] [] ='foo''我会有一个多维有4层直接阵列? – Webeng

+0

@Webeng正确。 –