Может ли кто-нибудь помочь мне с этим массивом, который у меня есть? Я хочу создать таблицу, состоящую максимум из 5 столбцов и максимум 15 строк. Если, например, есть только 4 строки, то вместо 15 следует показывать только 4 строки. Если есть только 3 ячейки, у которых есть данные, то остальные 2 должны быть дополнены $nbsp;
,
Вот мой массив образцов:
Array ( [0] => Array ( [name] => test1 [item_id] => 1 ) [1] => Array ( [name] => test2 [item_id] => 2 ) [2] => Array ( [name] => test3 [item_id] => 3 ) [3] => Array ( [name] => test4 [item_id] => 4 ) [4] => Array ( [name] => test5 [item_id] => 5 ) [5] => Array ( [name] => test6 [item_id] => 6 ) )
Мои данные повторяются, если добавлена новая строка. Это мой вопрос в настоящее время.
$row = count( $array ) / 5; $col = 5; echo'<table border="1" width="700">'; for( $i = 0; $i < $row; $i++ ) { echo'<tr>'; for( $j = 0; $j < $col; $j++ ) { if( ! empty( $array[$j] ) ) { echo '<td>'.$array[$j]['item_id'].'</td>'; } } echo'</tr>'; } echo'</table>';
Давайте назовем ваш массив $rows
, ок?
echo "<table>"; foreach ($rows as $row) { echo "<tr>"; foreach ($row as $column) { echo "<td>$column</td>"; } echo "</tr>"; } echo "</table>";
Использование foreach
более идиоматично для циклических рядов массивов в php, и это значительно повышает читаемость вашего кода. Кроме того, единственная переменная, в которой вы нуждаетесь, – это та, которая содержит сам массив.
Проверять, выписываться:
PHP-массив для таблицы
Или этот класс
В основном простая логика:
echo "<table border=\"5\" cellpadding=\"10\">"; for ($i=0; $i < count($input); $i++) { echo "<tr>"; for ($c=0; $c<$cols; $c++) { echo "<td>$input[$i]</td>"; } echo "</tr>"; } echo "</table>";
Вот фрагмент, который я написал для тестирования преобразования php-массива в html.
$row = array( 'column 1' => 'value', 'column 2' => 'value', 'column 3' => 'value', 'column 4' => 'value', 'column 5' => 'value', 'column 6' => 'value', 'column 7' => 'value', ); $rows = array($row, $row, $row, $row, $row, $row, $row, $row, $row, $row); print array_to_html($rows); function array_to_html($data) { $report = ""; if (count($data) > 0) { $report .= "<table>"; $report .= sprintf("<tr><th>%s</th></tr>", join("</th><th>", array_keys($data[0]))); foreach ($data as $row) { $report .= "<tr>"; foreach ($row as $column) { $report .= "<td>$column</td>"; } $report .= "</tr>"; } $report .= "</table>"; } else { $report = "No data"; } return $report; }