来自for循环中随机序列的html表
Posted
技术标签:
【中文标题】来自for循环中随机序列的html表【英文标题】:html table from random sequence in a for loop 【发布时间】:2013-06-03 03:05:12 【问题描述】:因为我是一个音乐书呆子,所以我做了一个小脚本来生成一个随机的节奏模式:
echo "X ";
for ($beats=rand(0,11); $beats>0; $beats--)
$xo=rand(0,2);
if ($xo==0)
echo "x ";
else
echo "- ";
它提供最多 12 个节拍的随机节奏,其中“x”表示重音节拍,第一个节拍总是重音节拍。 (示例输出:X-x-x--)
现在,为了看起来,我想将这些数据放入一个 html 表中。我希望上面示例的标记是这样的:
<table border="1">
<tr>
<th>Beat:</th>
<th>1</th>
<th>2</th>
<th>3</th>
<th>4</th>
<th>5</th>
<th>6</th>
<th>7</th>
</tr>
<tr>
<td>Accent:</td>
<td>X</td>
<td>-</td>
<td>x</td>
<td>-</td>
<td>x</td>
<td>-</td>
<td>-</td>
</tr>
</table>
唉,我的编程技巧到此结束。谁能提供一些代码来帮助解决这个问题?
【问题讨论】:
【参考方案1】:只需在表格内生成模式:
<?php
$numBeats=rand(0,11);
?>
<table border="1">
<tr>
<?php
echo "<td>Beat:</td>";
for ($i=1; $i<=$numBeats+1; $i++)
echo "<td>" . $i . "</td>";
?>
</tr>
<tr>
<?php
echo "<td>Accent:</td>";
echo "<td>X</td>";
for ($beats=$numBeats; $beats>0; $beats--)
$xo=rand(0,2);
if ($xo==0)
echo "<td>x</td>";
else
echo "<td>-</td>";
?>
</tr>
</table>
【讨论】:
不完全——“Beat”行还必须有许多列与生成的重音标记相对应。运行代码,你就会明白我的意思了。$beats
是 rand(0,11)
所以表可以有不同数量的列 - 有时是 7,有时更多,有时更少。
抱歉 - 澄清一下 - th 标签的数量(顶栏)应该随着节拍的数量而变化。因此,如果表格的底部列显示“Accents: X--X-”,顶部应显示“Beat:1 2 3 4 5”......应该生成 1 到 12 列(除了标签'左侧的重音和节拍。
这个答案总是生成 7 列
现在它会生成随机数的节拍。【参考方案2】:
<table border='1'>
<tr>
<th>Beat:</th>
<?
$times = rand(1,12);
$i = 1;
while ($i <= $times)
echo "<th>$i</th>";
$i++;
?>
</tr>
<tr>
<td>Accent:</td>
<td>X</td>
<?
$i = 1;
while ($i <= ($times-1))
if (rand(0,1)) echo "<td>x</td>";
else echo "<td>-</td>";
$i++;
?>
</tr>
</table>
【讨论】:
这非常接近!乍一看,它缺少表格的“线条”,并且重音直接在“Beat”一词下开始,没有“重音”框。 对,我忘了第二行开头的“Accent”标签——现在应该没问题了。 齐亚诺,你是一个真正的文艺复兴时期的男人或女人。我将向远方的连载极客们歌颂!以上是关于来自for循环中随机序列的html表的主要内容,如果未能解决你的问题,请参考以下文章