Saya membuat fungsi roundrobin dari awal karena saya pikir mungkin lebih mudah untuk mendapatkan hasil yang sama dan juga memungkinkan saya untuk menggunakan array yang diisi dengan string secara langsung daripada angka.
Karena saya menarik daftar nama dari database dan menambahkannya ke dalam array, saya sekarang dapat menjadwalkannya secara langsung dengan fungsi di bawah ini. Tidak perlu langkah ekstra untuk menautkan nomor ke nama dll.
Silakan mencobanya dan jika berhasil tinggalkan komentar. Saya juga memiliki versi yang memungkinkan jadwal 2 arah (pulang &pulang) dan atau opsi acak. Jika seseorang tertarik dengan yang itu, tinggalkan komentar juga.
<?php
/**
* @author D.D.M. van Zelst
* @copyright 2012
*/
function scheduler($teams){
if (count($teams)%2 != 0){
array_push($teams,"bye");
}
$away = array_splice($teams,(count($teams)/2));
$home = $teams;
for ($i=0; $i < count($home)+count($away)-1; $i++){
for ($j=0; $j<count($home); $j++){
$round[$i][$j]["Home"]=$home[$j];
$round[$i][$j]["Away"]=$away[$j];
}
if(count($home)+count($away)-1 > 2){
array_unshift($away,array_shift(array_splice($home,1,1)));
array_push($home,array_pop($away));
}
}
return $round;
}
?>
Cara menggunakan, misalnya membuat array seperti:
<?php $members = array(1,2,3,4); ?>
atau
<?php $members = array("name1","name2","name3","name4"); ?>
lalu panggil fungsi untuk membuat jadwal Anda berdasarkan array di atas:
<?php $schedule = scheduler($members); ?>
Untuk menampilkan jadwal array yang dihasilkan cukup lakukan seperti di bawah ini atau apa pun yang Anda suka:Kode kecil ini menampilkan jadwal dalam format yang bagus tetapi gunakan sesuka Anda.
<?php
foreach($schedule AS $round => $games){
echo "Round: ".($round+1)."<BR>";
foreach($games AS $play){
echo $play["Home"]." - ".$play["Away"]."<BR>";
}
echo "<BR>";
}
?>
Tinggalkan catatan jika berhasil untuk Anda atau jika Anda tertarik dengan versi 2 arah dengan shuffle.