#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; ?>