Вывод PHP-массива в таблицу колонками
Имеется простой массив с элементами, например:
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.geshi_code {font-family:monospace;} .php.geshi_code .imp {font-weight: bold; color: red;} .php.geshi_code .kw1 {color: #b1b100;} .php.geshi_code .kw2 {color: #000000; font-weight: bold;} .php.geshi_code .kw3 {color: #990000;} .php.geshi_code .co1 {color: #666666; font-style: italic;} .php.geshi_code .co2 {color: #666666; font-style: italic;} .php.geshi_code .co3 {color: #0000cc; font-style: italic;} .php.geshi_code .co4 {color: #009933; font-style: italic;} .php.geshi_code .coMULTI {color: #666666; font-style: italic;} .php.geshi_code .es0 {color: #000099; font-weight: bold;} .php.geshi_code .es1 {color: #000099; font-weight: bold;} .php.geshi_code .es2 {color: #660099; font-weight: bold;} .php.geshi_code .es3 {color: #660099; font-weight: bold;} .php.geshi_code .es4 {color: #006699; font-weight: bold;} .php.geshi_code .es5 {color: #006699; font-weight: bold; font-style: italic;} .php.geshi_code .es6 {color: #009933; font-weight: bold;} .php.geshi_code .es_h {color: #000099; font-weight: bold;} .php.geshi_code .br0 {color: #009900;} .php.geshi_code .sy0 {color: #339933;} .php.geshi_code .sy1 {color: #000000; font-weight: bold;} .php.geshi_code .st0 {color: #0000ff;} .php.geshi_code .st_h {color: #0000ff;} .php.geshi_code .nu0 {color: #cc66cc;} .php.geshi_code .nu8 {color: #208080;} .php.geshi_code .nu12 {color: #208080;} .php.geshi_code .nu19 {color:#800080;} .php.geshi_code .me1 {color: #004000;} .php.geshi_code .me2 {color: #004000;} .php.geshi_code .re0 {color: #000088;} .php.geshi_code span.xtra { display:block; }
Нужно вывести их html-таблицей вот так:
Title1 Title4 OneMoreEl
Title2 Title5
Title3 Ending
Как это сделать?
/** * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann * (http://qbnz.com/highlighter/ and http://geshi.org/) */ .php.geshi_code {font-family:monospace;} .php.geshi_code .imp {font-weight: bold; color: red;} .php.geshi_code .kw1 {color: #b1b100;} .php.geshi_code .kw2 {color: #000000; font-weight: bold;} .php.geshi_code .kw3 {color: #990000;} .php.geshi_code .co1 {color: #666666; font-style: italic;} .php.geshi_code .co2 {color: #666666; font-style: italic;} .php.geshi_code .co3 {color: #0000cc; font-style: italic;} .php.geshi_code .co4 {color: #009933; font-style: italic;} .php.geshi_code .coMULTI {color: #666666; font-style: italic;} .php.geshi_code .es0 {color: #000099; font-weight: bold;} .php.geshi_code .es1 {color: #000099; font-weight: bold;} .php.geshi_code .es2 {color: #660099; font-weight: bold;} .php.geshi_code .es3 {color: #660099; font-weight: bold;} .php.geshi_code .es4 {color: #006699; font-weight: bold;} .php.geshi_code .es5 {color: #006699; font-weight: bold; font-style: italic;} .php.geshi_code .es6 {color: #009933; font-weight: bold;} .php.geshi_code .es_h {color: #000099; font-weight: bold;} .php.geshi_code .br0 {color: #009900;} .php.geshi_code .sy0 {color: #339933;} .php.geshi_code .sy1 {color: #000000; font-weight: bold;} .php.geshi_code .st0 {color: #0000ff;} .php.geshi_code .st_h {color: #0000ff;} .php.geshi_code .nu0 {color: #cc66cc;} .php.geshi_code .nu8 {color: #208080;} .php.geshi_code .nu12 {color: #208080;} .php.geshi_code .nu19 {color:#800080;} .php.geshi_code .me1 {color: #004000;} .php.geshi_code .me2 {color: #004000;} .php.geshi_code .re0 {color: #000088;} .php.geshi_code span.xtra { display:block; }
Нужно вывести их html-таблицей вот так:
Title1 Title4 OneMoreEl
Title2 Title5
Title3 Ending
Как это сделать?
1 ответов
function tableCreator($cols, $ar) {
$rows = ceil(count($ar)/$cols);
echo '<table border="1">';
for ($i=0;$i<$rows;$i++){
echo '<tr>';
for ($j=0;$j<$cols;$j++){
echo "<td>".$ar[$j*$rows+$i]."</td>";
}
echo '</tr>';
};
echo '</table>';
};
$ar = array('Title1', 'Title2', 'Title3', 'Title4', 'Title5', 'Ending', 'OneMoreEl');
tableCreator(3,$ar);
Типа того думаю.
Кусок старого-старого кода. Где-то из зари моего программирования:
<?php
$row = array('a','b','c','d','e','f','g','h');
$col_num = 3;// Количество колонок для вывода
$elm_num = count($row);
$row_num = ceil($elm_num / $col_num); //количество рядов
$i = 1; //счетчик начала и окончания ряда;
echo '<table width=\'100%\' cellpadding=\'5\'>'.PHP_EOL;
for ($item = 0; $item < $elm_num; $item++) {
if($i == 1) echo '<tr>';
$idx = ($item % $col_num) * $row_num + floor($item / $col_num);
if ($idx < $elm_num && isset($row[$idx])) {
echo '<td>'.$row[$idx]."</td>".PHP_EOL;
}
if (($item + 1) % $col_num == 0) {
//echo PHP_EOL;
}
if($i == $col_num) {
echo '</tr>'.PHP_EOL;
$i = 1;
} else {
$i++;
}
}
//добиваем таблицу, если элементов меньше
if($i <= $col_num)
{
while($i <= $col_num)
{
echo "<td> </td>".PHP_EOL;
$i++;
}
echo "</tr>".PHP_EOL;
}
echo '</table>'.PHP_EOL;
?>
Написал бы пару строк говнокода, да уже отрубаюсь.
Если до завтра не дадут ответ, то напишу вечером.
Алгоритм такой
Создаем цикл FOR, в условие цикла, само собой, подсчитываем количество данных в массиве (count)
А вот внутри цикла уже делаем три условия
Если показатель кратный 3, то одно, если двум, то второе, ну и если не то ни другое, то третье. (не забываем что отсчет от нуля, а я написал тут от единицы)
Суть надеюсь ясна.
ЗЫ написал, прочитал и ужаснулся. О, боже, сколько раз я промахнулся по клавишам.