Добрый вечер! Решаю проблему формирования списка-дерева.
Имеется к примеру такой массив:
$mas = array ( "City" => array ( "a" => "New-York",
"b" => "London",
"c" => "Moscow"
),
"Numbers" => array ( "element-1",
"element-2",
"element-3",
"element-4",
"element-5",
"element-6"
),
"Other" => array ( "one",
5 => "two",
"three",
7=> array ("mas10", "mas15")
)
);
После преобразования в JSON-формат массив выглядит так:
Код:
|
{
"City":{"a":"New-York","b":"London","c":"Moscow"},
"Numbers" ["element-1","element-2","element-3","element-4","element-5","element-6"],
"Other":{"0":"one","5":"two","6":"three","7":["mas10","mas15"]}
} |
Через JSON я передаю его в JS-код, в котором есть функция проставляющая теги списка:
Код:
|
function Dump(d,l)
{
if (l == null) l = 1;
var s = '';
if (typeof(d) == "object")
{
s += "<li><img src='../images/folder.gif' />";
for (var k in d)
{
s += "<ul>" + Dump(d[k],l+1)+"</ul>";
}
s += "</li>";
}
else
{
s += "<li><img src='../images/file.gif' />" + d + "</li>";
}
return s;
}
str = Dump(data,1);
$("#span2").html(str); |
И все это дело формируется в таком виде:
http://www.imgup.ru/image-12jrx7161953.html
А хотелось бы сделать так чтобы заголовки элементов которые являются массивами в свою очередь (как например "City" или "7") показывали свои заголовки, а элементы которые просто хранят значения не показывали свои заголовки (такие как ключ "a", "5" или просто значения без указанного ключа как к примеру "element-3", "mas15" и т.д.). Как это сделать? Пробовал выводить значения k в цикле, но оно выводит аболютно все ключи, даже которые не являются массивами.