Php 分组数据的平等分布

Php 分组数据的平等分布,php,mysql,Php,Mysql,我有一个MySQL表,表中有一群人,他们的名字上有一个数字。它们是1、2、3或4。我需要创建组,每个组中的成员分布均匀。换句话说,我不希望所有的4个在一个组中,或者所有的3个在另一个组中。我希望它能均匀分布。 这就是我目前所拥有的。它呼应了人们,并根据他们的级别对他们进行分组,但我不确定如何使他们的分组平均分配他们的级别。 我还有一些代码,尽管我因缺乏经验而激怒了社区,但我希望有人能告诉我如何清理代码。我想怎么做就怎么做,但感觉很难看。任何帮助都将不胜感激 <?php include_o

我有一个MySQL表,表中有一群人,他们的名字上有一个数字。它们是1、2、3或4。我需要创建组,每个组中的成员分布均匀。换句话说,我不希望所有的4个在一个组中,或者所有的3个在另一个组中。我希望它能均匀分布。 这就是我目前所拥有的。它呼应了人们,并根据他们的级别对他们进行分组,但我不确定如何使他们的分组平均分配他们的级别。 我还有一些代码,尽管我因缺乏经验而激怒了社区,但我希望有人能告诉我如何清理代码。我想怎么做就怎么做,但感觉很难看。任何帮助都将不胜感激

<?php

include_once 'connect.php';

$level1 = array();
$level2 = array();
$level3 = array();
$level4 = array();

$sql1 = "SELECT * FROM table WHERE level = 1";
$stmt = $handler->prepare($sql1);
$stmt->execute();

$row = $stmt->fetchAll();

foreach($row as $rows)
{

$level1[] = $rows['name'];

}

$sql2 = "SELECT * FROM table WHERE level = 2";
$stmt = $handler->prepare($sql2);
$stmt->execute();

$row = $stmt->fetchAll();

foreach($row as $rows)
{

$level2[] = $rows['name'];

}

$sql3 = "SELECT * FROM table WHERE level = 3";
$stmt = $handler->prepare($sql3);
$stmt->execute();

$row = $stmt->fetchAll();

foreach($row as $rows)
{

$level3[] = $rows['name'];

}

$sql4 = "SELECT * FROM table WHERE level = 4";
$stmt = $handler->prepare($sql4);
$stmt->execute();

$row = $stmt->fetchAll();

foreach($row as $rows)
{

$level4[] = $rows['name'];

}

$sql5 = "SELECT * FROM table";
$stmt = $handler->prepare($sql5);
$stmt->execute();

$row = $stmt->fetchAll();
$result = count($row);

for($i=0; $i<=$result; $i++)
{

echo $level1[$i];
echo"<br>";
echo $level2[$i];
echo"<br>";
echo $level3[$i];
echo"<br>";
echo $level4[$i];
echo"<br>";

}

?>

听起来像是一种简单的循环式分布,它需要1到4的循环范围,并将其用作数组的索引,该数组为每个组累积计数。如果我理解了你的问题,这可能会解决你所描述的问题


如果你还停留在理论层面,画一张你的意思的图表。代码示例意味着答案可以解决您的问题,而不是从理论上解决问题。

@b0s3“我没有任何代码,因为我现在处于“理论”阶段。”它不需要是代码。至少你可以解释最小的解决方案。堆栈溢出是一个帮助你解决代码问题的地方。像你这样的请求通常不会得到太多的积极响应。开始编写代码来完成这项工作,当您遇到问题时,发布一个问题,其中的代码不起作用,有人会很乐意帮助您@b0s3是我读过的最清楚的问题。现在让我把眼镜上的泥去掉;-)“不要只是斥责我缺乏“stackoverflow”礼节!!”-如果你不喜欢这些规则,可以用Stack或者在meta上发布。非常感谢。我要去著名的绘图板,看看我是否能让代码启动并运行,然后我会发布我所拥有的。我很感激你能给我一个机会,而不仅仅是谴责我缺乏“stackoverflow”礼仪!!听起来你脑子里好像有这个想法,但当你试图把它变成代码时,不确定性因素可能意味着你编写的代码不是基于对问题的真正理解。我建议用一个简单的序列图来定义它。您的规范对我来说很有意义,您可以发布伪代码我已经找到了代码,但是有没有办法将5个查询转换为1?添加代码做得很好,现在这看起来像是一个问题。在mysql中,您可以基于范围进行查询。您可以执行一个查询来获取所有数据,然后使用二维数组输出每个级别(其中级别是一个数组索引)。试一试,最好通过思考来学习基本的东西。查询将是您的最后一个查询,然后按级别对数组进行索引,这样您就可以对每个级别进行排序。非常感谢。我来看看多维数组,看看能找到什么。