Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2013, 15:23   #1
IntegralAL
 
Регистрация: 23.04.2011
Сообщений: 5
По умолчанию Создание списка из полей и ключей многомерного массива

Добрый вечер! Решаю проблему формирования списка-дерева.

Имеется к примеру такой массив:

PHP код:
$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",
                                    
=> "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 в цикле, но оно выводит аболютно все ключи, даже которые не являются массивами.
IntegralAL вне форума Ответить с цитированием
Старый 06.12.2013, 17:45   #2
Metandrostenalon
Форумчанин
 
Регистрация: 03.04.2009
Сообщений: 108
По умолчанию

Код:

(function() {
    var data = {
        "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"]}
    };

    function Dump(data) {
        var result = '';
        if (typeof data === 'object') {
            for (var p in data) {
                if (typeof data[p] === 'object') {
                    result += '<li><img src="../images/folder.gif" alt="" /> ' + p + '<ul>' + Dump(data[p]) + '</ul></li>';
                } else {
                    result += '<li><img src="../images/file.gif" alt="" /> ' + data[p] + '</li>';
                }
            }
        } else {
            result += '<li><img src="../images/file.gif" alt="" /> ' + data + '</li>';
        }
        return result;
    }

    console.log('<ul>' + Dump(data) + '</ul>');
})();
php,javascript
Metandrostenalon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача многомерного массива Fred2011 Общие вопросы C/C++ 1 15.04.2012 13:28
Сохранение многомерного массива в файл Agrahil Общие вопросы Delphi 7 10.12.2011 13:55
Длина многомерного массива Johnson Общие вопросы Delphi 2 18.02.2011 08:25
Сортировка многомерного массива Evgen1503 Помощь студентам 0 29.01.2010 13:59
Создание и перебор многомерного массива regman PHP 2 27.10.2009 11:29