Список и группировка случайных данных

#php

#php

Вопрос:

У меня есть класс из 9 человек. Я хочу случайным образом разделить учащихся в этом классе на классы из трех человек. Он продолжает возвращать одни и те же имена в моем запросе. Как я могу это сделать, вы можете помочь? Сначала я перечислил всех студентов. Затем я хочу случайным образом сгруппировать их в три.

Мой исходный код:

 <?php 

require 'db.php';

$students = $db->query('SELECT * FROM students')->fetchAll(PDO::FETCH_ASSOC);

?>

<div class="container mt-2">
    <div>
        <table class="table table-bordered">
  <thead>
    <tr>
      <th scope="col">ID</th>
      <th scope="col">Name</th>
      <th scope="col">No</th>
    </tr>
  </thead>
  <tbody>
    <?php foreach($students as $student): ?>
    <tr>
      <th scope="row"><?php echo $student['id'] ?></th>
      <td><?php echo $student['name'] ?></td>
      <td><?php echo $student['no'] ?></td>
    </tr>
    <?php endforeach; ?>
  </tbody>
</table>
    </div>


<?php

$randomstudents = $db->query('select * from students order by rand() limit 3')->fetchAll(PDO::FETCH_ASSOC);

?>

<div class="row">

<div class="col-md-3">
<h6>3 Person Classroom</h6>
<hr>
<ul>
<?php foreach($randomstudents as $rs): ?>
<li><?php echo $rs['name']; ?></li>
<?php endforeach; ?>
</ul>
</div>

<div class="col-md-3 offset-md-1">
<h6>3 Person Classroom</h6>
<hr>
<?php foreach($randomstudents as $rs): ?>
<li><?php echo $rs['name']; ?></li>
<?php endforeach; ?>
</div>

<div class="col-md-3 offset-md-1">
<h6>3 Person Classroom</h6>
<hr>
<?php foreach($randomstudents as $rs): ?>
<li><?php echo $rs['name']; ?></li>
<?php endforeach; ?>
</div>

</div>

</div>
  

Комментарии:

1.Вам не нужно foreach 3 раза $randomstudents , потому что у него есть только 3 позиции, которые вам нужно «распространить». Просто используйте точное положение array $randomstudents using $randomstudents[0]['name'] для повторения первого, удаление foreach , $randomstudents[1]['name'] будет вторым и так далее.

2. Можете ли вы объяснить немного больше? Например, когда я создаю класс из 4 человек, как я могу назначить оставшегося 1 человека другому классу? Как я должен использовать цикл foreach?

Ответ №1:

вы можете попробовать использовать array_chunk()

 <?php
$randomstudents = $db->query('select * from students order by rand()')
    ->fetchAll(PDO::FETCH_ASSOC);
$randomstudents = array_chunk($randomstudents, 3);

foreach ($randomstudents as $groupOfThree) :
?>
<div class="col-md-3">
  <h6>3 Person Classroom</h6>
  <hr>
  <ul>
    <?php foreach($groupOfThree as $rs): ?>
      <li><?php echo $rs['name']; ?></li>
    <?php endforeach; ?>
  </ul>
</div>
<?php endforeach; ?>