Привет У меня есть массив имен фильмов в алфавитном порядке, из которых я хочу создать таблицу html, я хочу сделать это на лету, поэтому я сделал следующее:
echo "<div align=\"center\"><table>"; $i=0; foreach ($results as $entry){ //If first in row of 4, open row if($i == 0) { echo "<tr>\n"; } //print a cell echo "\t<td>" . $entry . "</td>\n"; i++; //if last cell in row of 4, close row if($i == 4) { echo "</tr>\n"; $i=0; } } if($i < 4) { while($i < 4) { echo "\t<td></td>\n"; $i++; } echo "</tr>\n"; } echo "</table></div>";
Однако это создает таблицу, которая выглядит так:
entry0 | entry1 | entry2 | entry3 entry4 | entry5 | entry6 | entry7
Как я могу построить таблицу, например:
entry0 | entry3 | entry6 entry1 | entry4 | entry7 entry2 | entry5 | entry8
?
Я предполагаю, что мне пришлось бы реорганизовать мой массив $ results и все равно построить таблицу так же?
Я очень новичок в php (неделю!), Поэтому я не уверен, как это сделать
Спасибо за вашу помощь
$results = array( 'e1', 'e2', 'e3', 'e4', 'e5', 'e6','e7' ); $NUM_COLUMNS = 3; $numRows = count($results) / $NUM_COLUMNS; if (count($results) % $NUM_COLUMNS > 0) { $numRows += 1; } echo "<div align=\"center\"><table>"; $i=0; for ($i = 0; $i < $numRows; $i++) { echo "<tr>\n"; $index = $i; for ($j = 0; $j < $NUM_COLUMNS; $j++) { //print a cell $entry = ''; if ($index < count($results)) { $entry = $results[$index]; } echo "\t<td>" . $entry . "</td>\n"; $index += $numRows; } echo "</tr>\n"; } echo "</table></div>";
Это проверено и включает сортировку элементов по вертикали. Я бы написал описание, но мне просто позвонили и пошли. Я отвечу на вопросы, если у вас есть что-то в ~ 1 час. (Прости!)
Как насчет этого: (я не тестировал, но все должно быть в порядке)
<?php $i = 1; $max = 3; // this is the number of columns to display echo "<div align=\"center\"><table><tr>"; foreach ($results as $entry) { echo "<td style=\"text-align: center;\">"; echo $entry; echo "</td>"; $i++; if ($i == ($max)) { echo '</tr><tr>'; $i = 1; } } echo "</tr>\n"; echo "</table></div>"; ?>