我有一个具有这种结构的数组$ tree:
Array
(
[0] => Array
(
['fichier'] => 'test.xml'
['classes'] => Array
(
[0] => Array
(
['Id'] => '10'
['IdParent'] => 'L'
)
[1] => Array
(
['Id'] => '10-01'
['IdParent'] => '10'
)
...
)
)
[1] => Array
(
['fichier'] => 'test2.xml'
['classes'] => Array
(
[0] => Array
(
['Id'] => '10'
['IdParent'] => 'L'
)
[1] => Array
(
['Id'] => '10-02'
['IdParent'] => '10'
)
...
)
)
)
[2] => Array
(
...
)
...
)
结构如
L L ...
10 10
10-01 10-02
10-01-01 10-02-02
10-01-02 10-02-03
我尝试制作一个树视图:
L
-> 10
-> 10-01
-> 10-01-01
-> 10-01-02
-> 10-02
-> 10-02-02
-> 10-02-03
我写了一个递归函数:
function treeview($tree, $indiceTree, &$prec, $id = 'ICM'){
$indice = 0;
for ($i = ($indiceTree-sizeof($tree)); $i < sizeof($tree); $i++) {
for ($j = 0; $j < sizeof($tree[$i]['classes']); $j++) {
if($tree[$i]['classes'][$j]['IdParent']==$id) {
if (strpos($prec,$tree[$i]['classes'][$j]['Id']) == false) {
echo $tree[$i]['classes'][$j]['Id']; echo "<br><br>";
$prec .= ";".$tree[$i]['classes'][$j]['Id'];
break;
}
treeview($tree, $indiceTree+$indice,$prec, $tree[$i]['classes'][$j]['Id']);
break;
}
}
$indice++;
}
}
问题是这个功能永远不会停止。我的意思是显示结果很好,但只有在PHP超时时显示: 致命错误:超过60秒的最长执行时间
初始数组($ tree)有142个元素,因此执行时间太长,无法在Web应用程序中使用。 完成数组后,函数似乎永远不会停止。 如果你能帮我这个功能。提前谢谢
答案 0 :(得分:0)
我有一个对您有帮助的功能
function create_array($number, $data) {
global $aFinal;
$result = array();
// fPrintR($data);
foreach ($data as $row) {
if ($row['ParentID'] == $number) {
$result["put the value you want to show in the tree"] = create_array($row['SubID'], $data);
}
}
return $result; //$result;
}
以下函数是您从DB获取的数据,它返回一个数组
$aAdmnTrees = fGetSubscribers();
这里调用create_array
函数并传递数据数组
$aOppsArray = create_array(here you have to put ID of super Parent, $aAdmnTrees);
此功能用于显示树的HTML
function recArray($aOppsArray) {
?>
<ul>
<?php
foreach ($aOppsArray as $data => $value) {
if (!empty($data)) {
?>
<ul style="list-style-type: none; background-color: #336699; padding: 10px; width: 300px;">
<li style=" color: #FFFFFF;"><?php echo $data; ?></li>
</ul>
<?php
}
if (is_array($value)) {
recArray($value);
} else {
echo $value . " ";
}
}
?>
</ul>
<?php
}
调用最后一个函数
recArray($aOppsArray);