|
|
|
| из файла data.csv
6;Вакансии;060000000000000000;1
7;Контакты;070000000000000000;1
....
15; Что-то; 070100000000000000; 2
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
</head>
<?php
$array=array();
$fn = "data.csv" ; // Выбираем файл
$f = fopen($fn, "rt") or die("Ошибка!");
for ($i=0; $data=fgetcsv($f,8000,";"); $i++) {
for ($c=0; $c<count($data); $c++)
{
if($c==2){
$result = str_split($data[$c], 2);
for ($k=0; $k<count($result); $k++)
{
$kk=(int)$result[$k];
if($kk==0)
{
$un=(int)$result[$k-2];
$un2=(int)$result[$k-1];
if( $un==0) $key=$un2;
else $key=$i;
$array[$key]["parent"]=$un; // здесь нужно сделать рекурсию для проверки остальных вложенных
$array[$key]["pos"]=$un2;
$array[$key]["name"]=$data[1];
break;
}
}
}
}
}
// Построение дерева за один проход
foreach($array as $menu_id=>$data) {
// Прописать в родительском узле ссылку на пункт меню
$array[$data['parent']]['child'][$menu_id]=&$array[$menu_id];
}
// Готовый массив находится в $menu[0]['child']
$sorted_menu=(array)$array[0]['child'];
как здесь сделать рекурсию?
echo '<ul>';
foreach($sorted_menu as $top_menu) {
// Меню верхнего уровня
echo '<li>'.$top_menu['name'];
unset($chislo);
if (count($top_menu['child'])) {
$chislo=array();
// Субменю второго уровня
echo '<ul>';
foreach($top_menu['child'] as $sub_menu) {
$chislo[$sub_menu['pos']]=$sub_menu['name'];
// Сортируем
ksort($chislo);
}
// Выводим отсортированный список
foreach($chislo as $sub_menu) {
echo '<li>'.$sub_menu;
echo '</li>';
}
echo '</ul>';
}
echo '</li>';
}
echo '</ul>';
?>
</html>
|
Друзья, помогите пожалуйста, я вывожу список состоящих только из одного вложения, а мне нужна рекурсивная функция, которая будет проверять остальные вложения. | |
|
|