使用 3 个数组创建匹配
我正在为我公司的拼车项目开发一个应用程序,但遇到了问题(该过程有点复杂)。我想做的是以下内容:
我有 3 个团队,每组 3 人,每个团队都有一个唯一的成员 id 例如:
组 1 = (1,2,3,4)
组 2 = (5,6,7,8 )
第 3 组 = (9,10,11,12)
这个想法是对 2 个成员进行尽可能多的组合(我认为每个成员至少有 8 个)不与来自同一组的人进行匹配。
例如
1-5 1-6 1-7 1-8 1-9 1-10 1-11 1-12 2-5 2-6 2-7 2-8 2-9 ... 等等
这是一个代码片段(它可能与我想要实现的目标没有意义,但我是一名初级程序员)
<?php
$numberSet = array( range(1,4),
range(5,8),
range(9,12)
);
$sizeofArray=count($numberSet);
for ($i=0; $i<$sizeofArray; $i++){
for ($j=0; $j<count($numberSet[$i]); $j++){
for ($k=0; $k<count($numberSet[$i]); $k++){
echo $numberSet[$i][$j] . "<br>";
}
}
}
?>
I have an issue with an application that I'm developing for a car pooling program in my company (the process is kind of complex). What I want to do is the follwoing:
I have 3 teams of 3 people, each team has a unique member id for instance:
Group 1 = (1,2,3,4)
Group 2 = (5,6,7,8)
Group 3 = (9,10,11,12)
The idea is to make as many combinations as possible of 2 members (I think it is at least 8 per member) without matching with someone from the same group.
For example
1-5
1-6
1-7
1-8
1-9
1-10
1-11
1-12
2-5
2-6
2-7
2-8
2-9
...
and so on
This is a code snippet (it might not have sense with what I want to achieve but I'm a junior programmer)
<?php
$numberSet = array( range(1,4),
range(5,8),
range(9,12)
);
$sizeofArray=count($numberSet);
for ($i=0; $i<$sizeofArray; $i++){
for ($j=0; $j<count($numberSet[$i]); $j++){
for ($k=0; $k<count($numberSet[$i]); $k++){
echo $numberSet[$i][$j] . "<br>";
}
}
}
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您明确了您真正想要实现的目标,可能会有更多帮助,但继续下去,这是一种获取一组成员的所有匹配项的方法,而不会将其与该组中的任何人匹配自己的组 - 我假设您计划在工作集中拥有多个 ID,而不是简单的 1234、5678、9 10 11 12:
最后寻找单个用户匹配:
结果:
如果您想显示所有可能性,您可以做一些事情像这样:
结果:
如果将 $numberSet 更改为:
结果:
If you clear up what it is you actually want to achieve, it maybe a little more help, but to be going on with, here is one way to get all the matches for a member of one group, without matching it to anyone from its own group - I will assume you plan on having multiple ID's and not a simple 1234, 5678, 9 10 11 12 in your working set:
Finally looking for a single users matches:
Results:
If you wanted to show all possibilities you could do something like this:
Results:
If you chenage $numberSet to:
The result:
您可能想看看 array_diff()。我可以看到类似这样的工作:
我不清楚的是“1-5”和“5-1”对是否相同,即您需要它们是唯一的对。
You might want to take a look at array_diff(). I could see something like this working:
What wasn't clear to me is if the pair "1-5" and "5-1" are the same or not i.e. you need them to be unique pairs.
如果它只计算 2 的对(而不是更高),您可以简单地计算其他两个数组。
对于 array1 中的任何人,只需
count(array2) + count(array3) = 对数
if it's only calculating pairs of 2 (and no higher), you can simply count the other two arrays.
for anyone in array1, simply
count(array2) + count(array3) = number of pairs