在for循环中使用随机序列创建HTML表格

4
因为我是一个音乐迷,所以我写了一个小脚本来生成随机的节奏模式:
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>

唉,这就是我的编程技能止步的地方了。有人可以提供一些代码来帮助吗?

2个回答

2

只需在表格中生成模式:

<?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”行也必须具有与生成的重音符号相对应的列数。运行代码,你就会明白我的意思。 - drenl
$beatsrand(0,11),因此表格可以有不同数量的列 - 有时是7列,有时更多,有时更少。 - furas
抱歉 - 为了澄清 - th 标签的数量(顶部列)应随着拍数的变化而变化。因此,如果表格的底部列读取“Accents: X--X-”,则顶部应读取“Beat:1 2 3 4 5” ...应生成1到12个列(除了左侧的“Accents”和“beats”标签)。 - drenl
这个答案总是生成7列。 - Ziarno
现在它生成随机数量的节拍。 - Logan

1
<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”下面开始了重音,没有“重音”框。 - drenl
对,我忘记了第二行开头的“Accent”标签-现在应该没问题了。 - Ziarno
Ziarno,你是一个真正的文艺复兴人物。我会向各地的串行主义极客传颂你的赞美之词! - drenl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接