【问题标题】:Print a new <tr> each time & "N" number of elements inside it, for a total quantity of "Q" [closed]每次打印一个新的 <tr> &其中的“N”个元素,总数为“Q”[关闭]
【发布时间】:2020-05-05 12:47:57
【问题描述】:
我有一个变量 Q,
我想在 HTML 表格行中打印“猫”(或其他)Q 次,只有 HTML 表格的每一行可以包含最多 5 只猫。
就像如果 Q <tr>。
& 如果 Q = 10;
然后我想打印 2 行,每行包含 5 只猫。
有人可以帮我吗?
我使用 php 作为编程语言和 HTML。
提前致谢。
【问题讨论】:
标签:
php
html
algorithm
loops
html-table
【解决方案1】:
您还可以使用array_chunk 来决定每行的块(次数),并使用str_repeat 重复一个字符串以实现您的目标。
<?php
$times = 12;
$limit_for_each_row = 5;
$string = "Cat";
echo "<table>";
foreach(array_chunk(range(1,$times),$limit_for_each_row) as $chunk){
echo "<tr>" . str_repeat("<td>$string</td>",count($chunk)) . "</tr>";
}
echo "</table>";
演示: https://3v4l.org/EWgHh
【解决方案2】:
以下代码可能会帮助您实现请求的输出:
<?php
$print_label = "meow";
$q = 15;
$steps = 5;
echo "<table>";
for($i=1;$i<=ceil($q/$steps);$i++) :
echo "<tr>";
for($j=1;$j<=$steps;$j++) :
echo "<td>".$print_label."</td>";
endfor;
echo "</tr>";
endfor;
echo "</table>";
【解决方案3】:
解决这个问题的一种方法是使用array_fill 来制作一个由$q 组成的数组复制单词; array_chunk 将其拆分为每行的最大字数;和implode 将每个块中的所有单词放在一起:
$word = "cat";
$q = 13;
$row_max = 5;
$words = array_fill(0, $q, $word);
$chunks = array_chunk($words, $row_max);
foreach ($chunks as $chunk) {
echo '<tr><td>' . implode('</td><td>', $chunk) . '</td></tr>' . "\n";
}
输出:
<tr><td>cat</td><td>cat</td><td>cat</td><td>cat</td><td>cat</td></tr>
<tr><td>cat</td><td>cat</td><td>cat</td><td>cat</td><td>cat</td></tr>
<tr><td>cat</td><td>cat</td><td>cat</td></tr>
Demo on 3v4l.org