Я должен распечатать таблицу с использованием TCPDF для создания PDF-файла с использованием PHP из массива содержимого.
В моем примере я использую 7 записей, но их может быть больше или меньше.
$array = array(
0 => "[ ] Option 1",
1 => "[x] Option 2",
2 => "[ ] Option 3",
3 => "[ ] Option 4",
4 => "[x] Option 5",
5 => "[ ] Option 6",
6 => "[ ] Option 7",
...
);
Макет моей таблицы динамический: я могу установить количество столбцов для отображения ($num_cols может быть 1, 2, 3 или 4 столбца)
Основываясь на моем $ num_cols, я разделил содержимое массива в каждой ячейке TD.
Итак, если я установил $num_cols = 4, мне нужно показать что-то вроде этого:
<table>
<tr>
<td>[ ] Option 1</td>
<td>[x] Option 2</td>
<td>[ ] Option 3</td>
<td>[ ] Option 4</td>
</tr>
<tr>
<td>[x] Option 5</td>
<td>[ ] Option 6</td>
<td>[ ] Option 7</td>
<td></td>
</tr>
</table>
Я попытался выдвинуть какие-то идеи, но в этом примере у меня получилась только строка. Я не знаю, как создать внешний цикл:
echo "<table>";
echo "<tr>";
for ( $i = 0; $i < $num_cols; $i++ ) {
echo "<td>";
if ( isset($array[$i]) {echo $array[$i];} else {}
echo "</td>";
}
echo "</tr>";
echo "</table>";
Похоже, вы хотите исследовать вложенные циклы.






кусок массива поможет вам:
<?php
$num_cols = 4;
$array = [1,2,3,4,5,6,7,8];
echo "<table>";
foreach (array_chunk($array, $num_cols) as $chunk) {
echo "<tr>";
foreach ($chunk as $item) {
echo "<td>";
echo $item;
echo "</td>";
}
echo "</tr>";
}
echo "</table>";
и вы можете использовать другие крутые штуки с php :)
<?php
$num_cols = 4;
$array = [1,2,3,4,5,6,7,8];
echo "<table><tr><td>" .
implode("</td></tr><tr><td>",
array_map(function(array $part) {
return implode('</td><td>', $part);
}, array_chunk($array, $num_cols))
)
. "</td></tr></table>";
<?php
$array = array(
0 => "[ ] Option 1",
1 => "[x] Option 2",
2 => "[ ] Option 3",
3 => "[ ] Option 4",
4 => "[x] Option 5",
5 => "[ ] Option 6",
6 => "[ ] Option 7"
);
$num_cols = 4;
//Use $i as a counter
$i = 0;
echo '<table>';
foreach ($array as $key => $val) {
//If we are outputting the first column in a row, create a new tr tag
if ($i % $num_cols == 0)
echo '<tr>';
//Output the column
echo '<td>' . $val . '</td>';
//If we are at the end of the number of columns, close the tr tag
if ($i % $num_cols == 3)
echo '</tr>';
$i++;
}
//If we didn't close the tr tag in the loop, close it now
if ($i % $num_cols != 0)
echo '</tr>';
echo '</table>';
?>
Слишком тяжело для простой задачи. Вы должны использовать существующие функции php, которые здесь, чтобы помочь вам, вместо того, чтобы пытаться воссоздать то, что кто-то уже реализовал. См. Другой ответ с помощью array_chunk.
Да, я мог бы использовать array_chunk, но я нашел правильное решение и без него. Тот факт, что я не использую встроенную функцию, не означает, что я должен быть отвергнут ...
Речь идет не о том, чтобы не использовать собственные функции. Здесь на карту поставлена удобочитаемость. Ваш код намного труднее понять, когда другое решение неявно на первый взгляд.
Это смешно. Учитывая, что у меня есть комментарии в моем коде, ТОЧНО объясняющие, что происходит. В отличие от другого решения. Посмотрите на второй блок кода этого решения. Читать сложнее, чем мою.
ставлю тебе плюс @ Mic1780 ^ _ ^ мир!
Ага. Я имею в виду. Мы часто говорим, что лучший комментарий - это тот, который вам вообще не приходилось писать. Что на самом деле может иметь большой смысл, когда вы в конечном итоге пишете больше комментариев, чем код.
Я не вижу ничего плохого в этом ответе. Он изменяет код OP и дает ожидаемые результаты. Комментарии никогда не бывают плохими (если они имеют смысл). Хотя считаю оба ответа хорошими.
Боковое примечание: вам не нужны пустые операторы else. Вы можете избавиться от своего "else {}".