我想在php中创建一个多维数组。这里是我做了什么:如何将多维转换为PHP中多个表的嵌套数组?
首先,我有3个表:
企业公司:
enterprise_id name
1 e1
2 e2
网站:
site_id entreprise_id name
1 1 e1_site1
2 2 e2_site1
...
salarie:
salarie_id site_id name
1 1 e1_site1_salarie1
2 2 e2_site1_salarie1
...
我有以下PHP代码:
$query = "select * from entreprise";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)){
$query2 = "select * from site where entreprise_id = $row[entreprise_id]";
$result2 = mysql_query($query2);
$a2 = array();
while($row2 = mysql_fetch_assoc($result2)){
$query3 = "select * from salarie where site_id = $row2[site_id]";
$result3 = mysql_query($query3);
while($row3 = mysql_fetch_assoc($result3)){
$a3[] = array("text"=>$row3[nom]);
}
$a2[] = array("text"=>$row2[nom],'children'=>$a3);
}
$a1[] = array("text"=>$row[id]." ".$row[nom],'children'=>$a2);
}
但是你可以看到输出是混合的。例如,'e1_site1_salarie1_nom'在'e1_site2'中,'e1_site1_salarie1_nom'在'e2_site2'下。真奇怪。
Array
(
[0] => Array
(
[text] => e1
[children] => Array
(
[0] => Array
(
[text] => e1_site1
[children] => Array
(
[0] => Array
(
[text] => e1_site1_salarie1_nom
)
)
)
[1] => Array
(
[text] => e1_site2
[children] => Array
(
[0] => Array
(
[text] => e1_site1_salarie1_nom
)
[1] => Array
(
[text] => e1_site2_sa1
)
[2] => Array
(
[text] => e1_site2_sa2
)
)
)
)
)
[1] => Array
(
[text] => e2
[children] => Array
(
[0] => Array
(
[text] => e2_site2
[children] => Array
(
[0] => Array
(
[text] => e1_site1_salarie1_nom
)
[1] => Array
(
[text] => e1_site2_sa1
)
[2] => Array
(
[text] => e1_site2_sa2
)
[3] => Array
(
[text] => e2_site2_salarie2_nom
)
)
)
)
)
)
我认为这是我的PHP代码的问题。我认为我应该使用更多的条件判断,例如如果其他等与下面的代码。
$a2[] = array("text"=>$row2[nom],'children'=>$a3);
$a1[] = array("text"=>$row[id]." ".$row[nom],'children'=>$a2);
但我不知道如何改变它。
您有任何线索或建议吗?
在此先感谢。
编辑:
继Tatu的建议,它的工作原理。谢谢Tatu。现在我还有一个问题。我不想在数组的标题中使用[1] => Array
。如何实现这一目标?
Array
(
[1] => Array
(
[text] => e1
[children] => Array
(
[1] => Array
(
[text] => e1_site1
[children] => Array
(
[1] => e1_site1_salarie1_nom
)
)
[3] => Array
(
[text] => e1_site2
[children] => Array
(
[3] => e1_site2_sa1
[4] => e1_site2_sa2
)
)
)
)
[2] => Array
(
[text] => e2
[children] => Array
(
[2] => Array
(
[text] => e2_site2
[children] => Array
(
[2] => e2_site2_salarie2_nom
)
)
)
)
)
你可以看到JSON代码:
{"1":{"text":"e1","children":{"1":{"text":"e1_site1","children":{"1":"e1_site1_salarie1_nom"}},"3":{"text":"e1_site2","children":{"3":"e1_site2_sa1","4":"e1_site2_sa2"}}}},"2":{"text":"e2","children":{"2":{"text":"e2_site2","children":{"2":"e2_site2_salarie2_nom"}}}}}
我想要的结果是这样的:
{{"text":"e1","children":{{"text":"e1_site1","children":{"text":"e1_site1_salarie1_nom"}},{"text":"e1_site2","children":{"text":"e1_site2_sa1","text":"e1_site2_sa2"}}}},{"text":"e2","children":{{"text":"e2_site2","children":{"text":"e2_site2_salarie2_nom"}}}}}
@Tatu UImanen,你是天才!有用。非常感谢。 ;) – 2010-02-08 11:24:11