и ';
$td = "";

// открываем таблицу
$grid = "

Программа: Печать массива в виде HTML-таблицы

Преобразование массива в таблицу с горизонтально расположенными столбцами располагает фиксированное количество элементов в строке.

Первое множество заполняет начальную строку таблицы, второе множество располагается в следующей строке и так далее. Наконец доходим до последней строки, которую, возможно, придется заполнить пустыми ячейками таблицы.

Функция pc_grid_horizontal(), показанная в примере 4.8, позволяет указать массив и число столбцов. Она предполагает ширину таблицы, равную 100%, но ее можно изменить с помощью переменной $table_width.

Пример 4.8. pc_grid_horizontal()
function pc_grid_horizontal($array, $size) {

// вычисляем ширину элемента
в процентах
$table_width = 100;
$width = intval($table_width / $size);

// определяем вид тегов

// функция sprintf() требует использования %% для получения символа %
$tr = '
%s
$tr";

// выполняем цикл по элементам и отображаем в строке длиной $sized
// $i отслеживает, когда нужно начинать новую строку таблицы
$i = 0;
foreach ($array as $e) {
$grid .= sprintf($td, $e);
$i++;

// конец строки
// закрываем ее и начинаем новую
if (!($i % $size)) {
$grid .= "$tr";
}
}

// заполняем остальные ячейки пробелами
while ($i % $size) {
$grid .= sprintf($td, ' ');
$i++;
}

// добавляем при необходимости
$end_tr_len = strlen($tr) * -1;
if (substr($grid, $end_tr_len) != $tr) {
$grid .= '';
} else {
$grid = substr($grid, 0, $end_tr_len);
}// закрываем таблицу
$grid .= '
';
return $grid;
}

Функция начинается с вычисления ширины каждого элемента в процентах к общей ширине таблицы.


В зависимости от количества столбцов и общего размера, сумма ширины элементов может не совпадать с шириной элемента , но это не должно заметно влиять на отображение HTML. Затем определяются теги , при этом используется нотация форматирования в стиле функции printf. Для получения символа %, необходимого для выражения в процентах ширины элемента закрывается и открывается снова.

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

Например, напечатаем названия 50 штатов США в таблице из шести столбцов:

// устанавливаем соединение с базой данных
$dsn = 'mysql://user:password@localhost/table';
$dbh = DB::connect($dsn);
if (DB::isError($dbh)) { die ($dbh->getMessage()); }
// запрашиваем в базе данных информацию о 50-ти штатах
$sql = "SELECT state FROM states";
$sth = $dbh->query($sql);
// загружаем данные из базы данных в массив
while ($row = $sth->fetchRow(DB_FETCHMODE_ASSOC)) {
$states[] = $row['state'];
}
// генерируем HTML-таблицу
$grid = pc_grid_horizontal($states, 6);
// и печатаем ее
print $grid;П.



Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Добавление одного массива к другому
Изменение длины массива
Инициализация массива диапазоном
Инициализация массива диапазоном целых чисел
Нахождение всех перестановок массива

Вернуться в раздел: PHP / 4. Массивы



и
, используйте сдвоенный символ %%.

Ядро функции – это цикл foreach по элементам массива, в котором каждый тег td> добавляется к переменной $grid. При достижении конца строки, что происходит, когда общее число обработанных элементов становится кратным количеству элементов в строке, элемент
. Для корректной передачи таблицы в броузер поместите непрерывную пробельную строку в ячейку данных, вместо того чтобы оставлять ее пустой. Теперь убедитесь в отсутствии лишних элементов