我开始学习,我正在制作家用fifa18杯的项目。 我有一个问题,我不知道如何配对我所说的所有球员: Player1,Player2,Player3,Player4
=> P1 vs P2, P1 vs P3, P1 vs P4
=> P2 vs P3, P2 vs P4
=> P3 vs P4
我使用牛顿公式n!/k!(n-k)!
计算未报复的匹配次数,并让所有玩家都在$tab
。
现在,我的问题,我该如何配对?
就像那样,它不会重复和P1 vs P1示例。
<?php
require("server/baza.php");
$przelacznik = 1;//$_POST['losuj'];
$zapytanie = "select nick from mecze";
if($przelacznik == 1){
$wynik = mysqli_query($polaczenie,$zapytanie);
$tab = array();
$n=0;
while($wiersz = mysqli_fetch_assoc($wynik)){
array_push($tab,$wiersz['nick']);
//$tab[] = $wiersz;
$n++;
}
$Nsilnia = 1;
$NKsilnia =1;
for ($i=1; $i<=$n; $i++) {
$Nsilnia *= $i;
}
for($j=1;$j<=($n-2);$j++){
$NKsilnia *= $j;
}
$ilosc_rozgrywek = ($Nsilnia)/(2*$NKsilnia);
}
?>
答案 0 :(得分:6)
如果您将播放器存储在如下数组中:
$player = ['P1', 'P2', 'P3', 'P4'];
你可以使用两个循环来配对所有可能的匹配,而不用复仇。
for ($i = 0; $i < count ($player); $i++) {
//set the start of the second loop to $i + 1
for ($j = $i + 1; $j < count ($player); $j++) {
echo $player[$i].' vs '.$player[$j];
}
}
将输出:
// P1 vs P2
// P1 vs P3
// P1 vs P4
// P2 vs P3
// P2 vs P4
// P3 vs P4
答案 1 :(得分:2)
$players = [ 'p1', 'p2','p3','p4', 'p5'];
$result =[];
for($i = 0; $i < count($players); $i++ ) {
for($j=$i+1; $j<count($players); $j++) {
$result[] = $players[$i] . ' vs ' . $players[$j];
}
}
print_r($result);
答案 2 :(得分:2)
如果P1与P2和P2与P1不相同。然后使用这个。
$player_list = ['p1', 'p2', 'p3', 'p4'];
$player_pair = array();
foreach($player_list as $key => $player){
for($i = 0; $i < count($player_list); $i++ ){
if($i != $key){
$player_pair[] = $player_list[$i] . ' VS ' . $player;
}
}
}
print_r($player_pair);
使用这一个:
$player_list = ['p1', 'p2', 'p3', 'p4'];
$player_pair = array();
foreach($player_list as $key => $player){
for($i = 0; $i < count($player_list); $i++ ){
$str = $player_list[$i] . ' VS ' . $player;
$str2 = $player . ' VS ' . $player_list[$i];
if($i != $key && !in_array($str, $player_pair) && !in_array($str2, $player_pair)){
$player_pair[] = $player_list[$i] . ' VS ' . $player;
}
}
}
print_r($player_pair);
答案 3 :(得分:0)
<?php
$no_players = 4;
$pairings = [];
for($i = 1; $i <= $no_players; $i++)
for($j = 1; $j <= $no_players; $j++)
if($i !== $j && !in_array([$j, $i], $pairings))
$pairings[] = [$i, $j];
var_export($pairings);
输出:
array (
0 =>
array (
0 => 1,
1 => 2,
),
1 =>
array (
0 => 1,
1 => 3,
),
2 =>
array (
0 => 1,
1 => 4,
),
3 =>
array (
0 => 2,
1 => 3,
),
4 =>
array (
0 => 2,
1 => 4,
),
5 =>
array (
0 => 3,
1 => 4,
),
)