【问题标题】:Randomise participants into different groups将参与者随机分成不同的组
【发布时间】:2015-12-14 00:56:20
【问题描述】:

问题:

我有一个 HTML 文本区域,我希望在其中输入参与者列表。提交表单后,我希望 PHP 获取此列表并将参与者随机分成 4 人一组。如果参与者人数不均(比如 51 人),那么最后一组应该是 3 人。

此外,我想请教一下如何在输出中给参与者一个标题。

代码:

<?php
    if (isset($_POST['submit'])) {
        $text  = trim($_POST['list']);
        $array = explode(PHP_EOL, $text);
        shuffle($array);

        print_r($array);
    }
?>
<!DOCTYPE html>
<html>
  <head>
    <title>Randomize groups</title>
    <meta charset="UTF-8">
  </head>
  <body>
    <form action="randomize.php" method="post">
      <fieldset>
        <legend>Randomize groups</legend>
          <label for="list">Enter names of participants:</label>
          <textarea name="list" rows="12" cols="50" autofocus></textarea>
      </fieldset>
      <input type="submit" name="submit" value="Submit">
    </form>
  </body>
</html>

期望的输出:

第 1 组

  • 参与者5
  • 参与者 3
  • 参与者 7
  • 参与者 4

第 2 组

  • 参与者 8
  • 参与者2
  • 参与者 1
  • 参与者6

【问题讨论】:

  • "最后一组应该是 3" - 这没有任何意义。准确。
  • @KarolyHorvath 如果您有 51 名参与者并将他们分成 4 人一组,那么最后一组会有多少人?
  • 如果不是 51,就说 49?
  • @KarolyHorvath 同样,如果你有 49 个人并将他们分成 4 组,那么最后一组会有多少人?
  • 与你交谈真是令人兴奋。

标签: php arrays list random shuffle


【解决方案1】:

我可能会建议这样做:

if (isset($_POST['submit'])) {
    $text  = trim($_POST['list']);
    $array = explode(PHP_EOL, $text);
    $half = count($array)/2;
    shuffle($array);
    $groups = array_chunk($array, $half);
    foreach($groups as $key=>$value){
        $key++;
        echo "<h2>Group $key</h2>";
        echo "<ul>";
        foreach($value as $participant){
            echo "<li>$participant</li>";
        }
        echo "</ul>";
}

【讨论】:

  • 不是$half,是4
猜你喜欢
  • 2017-07-24
  • 2012-08-28
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
相关资源
最近更新 更多