у меня есть эти две функции:
эта функция генерирует меню дерева ul из родительского mysql, parentid, title
while($row=mysqli_fetch_object($query)){
$data[$row->ParentId][] = $row;
}
function BuildTree($data, $parent = 0) {
static $i = 1;
//$tab = str_repeat('-', $i);
if ($data[$parent]) {
$html .= "\n<ul" . ($parent == 0 ? ' class="tree"' : '') . ">\n";
$i++;
foreach ($data[$parent] as $v) {
$child = BuildTree($data, $v->Parent);
$html .= "<li>";
$html .= '<span>' . $v->Title . "</span>";
if ($child) {
$i–;
$html .= $child;
}
$html .= "</li>\n";
}
$html .= "</ul>\n";
return $html;
} else {
return false;
}
}
echo (BuildTree($data));
оно генерирует меню, подобное:
категория A
-подкатегория категории A
- подкатегория A подкатегории A
категория B
...... бесконечно ...
и эта функцияполучить ключи массива
function GetKeys($array, $tree = array()) {
foreach ($array as $key => $value) {
if (is_array($value)) {
GetKeys($value, array_merge($tree, array($key)));
} else {
print implode('.', array_merge($tree, array($key, $value)));
print "\n<br />";
}
}
}
GetKeys($data);
он получает ключи типа
0
01
001
020
для каждого дочернего элемента меню
но я не знаю, как объединить это, чтобы получить что-то вроде:
категория A [0]
-подкатегория категории A [00]
- подкатегория A подкатегорииA [000]
- подкатегория B категории A [001]
категория B 1
бесконечно ...
Может кто-нибудь помочь мне с этой проблемойу меня есть?
$ var_dump $ data get:
структура массива
полный код
РЕШЕНИЕ:
function BuildTree($data, $parent = 0, $k=false) {
static $i = 1;
if ($data[$parent]) {
$html .= "\n<ul" . ($parent == 0 ? ' class="tree"' : '') . ">\n";
$i++;
foreach ($data[$parent] as $key => $v) {
$child = BuildTree($data, $v->Parent, $k.$key);
$html .= "<li>[" . $k.$key . ']';
$html .= '<span>' . $v->Title . "</span>";
if ($child) {
$i–;
$html .= $child;
}
$html .= "</li>\n";
}
$html .= "</ul>\n";
return $html;
} else {
return false;
}
}
echo (BuildTree($data));
людей, которые в этом помогают:
выключатель
Амр Бераг
СПАСИБО!