将参与者随机分成不同的组

时间:2015-09-17 08:15:42

标签: php arrays list random shuffle

问题:

我有一个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

1 个答案:

答案 0 :(得分: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>";
}