如何在PHP中配对玩家?

sha*_*pir -2 php

我开始学习,我正在制作一个家用fifa18杯的项目.我有一个问题,我不知道如何配对我所说的所有球员:Player1,Player2,Player3,Player4

=> P1 vs P2, P1 vs P3, P1 vs P4 
=> P2 vs P3, P2 vs P4 
=> P3 vs P4
Run Code Online (Sandbox Code Playgroud)

我使用牛顿公式n!/k!(n-k)!计算没有报复的比赛数量,并让所有球员进入$tab.

所以,现在,我的问题,我怎么配这个?

像这样,它不会重复和P1与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);
}
?>
Run Code Online (Sandbox Code Playgroud)

小智 6

如果您将播放器存储在以下数组中:

$player = ['P1', 'P2', 'P3', 'P4'];
Run Code Online (Sandbox Code Playgroud)

你可以使用两个循环来配对所有可能的匹配,而不用复仇.

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];

    }

}
Run Code Online (Sandbox Code Playgroud)

将输出:

// P1 vs P2
// P1 vs P3
// P1 vs P4
// P2 vs P3
// P2 vs P4
// P3 vs P4
Run Code Online (Sandbox Code Playgroud)