iamsaint
@iamsaint

PHP → Вывод массива в таблицу

Добрый день.
Посоветуйте, пожалуйста, как на php можно вывести в html таблицу массив c произвольным уровнем вложения?
Пример:

в коде:
array(
	[bmw] => array (
		[x3] => array(
			[0] => 'black',
			[1] => 'white'
			[other] => array (...)
			...
		),
		[x5] => array( ... ),
		...
	),
	[audi] => array(...),
	...
)



На странице:

image
  • Вопрос задан
  • 10833 просмотра
Пригласить эксперта
Ответы на вопрос 6
Gibbzy
@Gibbzy
Это ж элементарная рекурсивная функция.
Вам написать или сами осилите?
Ответ написан
Комментировать
sajgak
@sajgak
Самый простой вариант — вложенные [table] [/table] и рекурсия
Ответ написан
Сначала придётся прогуляться по массиву и найти самый глубокий уровень. Это пригодится для rowspan.
Ответ написан
Комментировать
powder96
@powder96
Написал две функции, которые могут вам пригодится: одна для вычисления ширины таблицы (глубины массива) — чтобы можно было правильно нарубить таблицу на строки, и вторая для вычисления высоты произвольной ячейки — чтобы можно было выставить rowspan. Все функции рекурсивные.

// красивооформленный массив см. в моем дополнении к вопросу
$input = array('bmw'=>array('x3'=>array('black','white','...'=>array('...'),'other'=>
array('something','something')),'x5'=>array('black','white','...'=>array('...'))),'audi'=>
array('...'=>array('...'=>array('...'))));

echo' Table dimensions: ' . arrayVizualize_tableWidth($input) . ' x ' . arrayVizualize_tableHeight($input);
echo '<br />';
echo '<b>bmw</b> rowspan is: ' . arrayVizualize_tableHeight($input['bmw']);

function arrayVizualize_tableWidth($array, $currDepth = 1) {
	$maximalDepth = $currDepth;
	foreach($array as $element)
		if(is_array($element)) {
			$elementDepth = arrayVizualize_tableWidth($element, $currDepth + 1);
			if($elementDepth > $maximalDepth)
				$maximalDepth = $elementDepth;
		}
		
	return $maximalDepth;
}

function arrayVizualize_tableHeight($array) {
	if(!is_array($array))
		return 1;

	$height = 0;
	foreach($array as $element) {
		if(is_array($element))
			$height += arrayVizualize_tableHeight($element);
		else
			++$height;
	}
	
	return $height;
}
Ответ написан
Комментировать
taliban
@taliban
php программист
А Вам обязательно табличка?
<div>
    <div class="title">bmw</div>
    <div class="childrens">
        <div>
            <div class="title">x5</div>
            <div class="childrens">...</div>
        </div>
    </div>
</div>

Нормальный верстальщик из этого стилями сделает все что угодно =)
Ответ написан
RedOctoberCZ
@RedOctoberCZ
Посмотрите здесь — может быть пригодится.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы