@Aitd

Как преобразовать массив в горизонтальную таблицу html?

Приветствую.
Стоит задача организовать горизонтальный раскрывающийся список.
Нашел такую штуку. Формирование происходит с помощью ul - li элементов.
Если кто знает что получше найденного - будет большая благодарность.

В чем смысл вопроса. В пхп есть выборка из базы, слегка нормализованная. Это ассоциативный массив, в массиве есть элемент, который может отсутствовать. Смыл в том, что при наличии этого элемента в нем содержится такой же массив, с теми же условиями ( таких элементов может быть несколько) и всё это уходит вглубь. Я так понимаю нужно сделать рекурсивный обход, но есть проблема с циклом, внутри элемента может быть ссылка на вышестоящий элемент и тогда оно будет обходиться до бесконечности.

Подскажите наиболее простой путь преобразования такого набора в данных в список?
  • Вопрос задан
  • 288 просмотров
Решения вопроса 1
function fn_tree(a) {
		// где a - ответ полученный от сервера
		// до вызова функции надо проверить на typeof(a) === 'undefined' || a === null
	
		var arr1 = [];
	
		for (var i1 = 0; i1 < a.length; ++i1) {
	
			var arr2 = [];
			if (typeof(a.[i1].nextChild) === 'undefined' || a.[i1].nextChild === null) {
				for (var i2 = 0; i2 < a.[i1].nextChild.length; ++i2) {
					var html2 = '' + 
						'<div>' + 
							a.[i1].nextChild.[i2].id + 
						'</div>' + 
					'';
					arr2.push(html2);
				};
			}
	
			var html1 = '' + 
				'<div>' + 
					'<div>' + 
						a.[i1].id + 
					'<div>' + 
					'<div>' + 
						arr2.join('') + 
					'<div>' + 
				'</div>' + 
			''; // рагульно строим DOM и чем-то его наполняем, нет времени :-)
	
			arr1.push(html1);
		};
		var b = arr1.join('');
		return b;
	}


Если упорядочить структуру данных, отдаваемых сервером - то можно упросить код и сделать его менее страшным.

На сервере отдавайте ответ в JSON (echo json_encode($a);)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Aitd Автор вопроса
Обычный пхп массив взятый из мускула, можно сделать в json
prntscr.com/9d8xjb
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы