Tôi đã tạo một hàm roundrobin từ đầu vì tôi nghĩ có thể dễ dàng hơn để có được kết quả tương tự và cũng cho phép tôi sử dụng các mảng chứa đầy chuỗi trực tiếp thay vì số.
Vì tôi kéo một danh sách các tên từ cơ sở dữ liệu và thêm vào một mảng nên giờ đây tôi có thể lập lịch điều này trực tiếp với hàm dưới đây. Không cần thêm bước nào để liên kết số với tên, v.v.
Vui lòng dùng thử và nếu nó hoạt động, hãy để lại nhận xét. Tôi cũng có một phiên bản cho phép lịch trình 2 chiều (về nhà và về) và hoặc tùy chọn xáo trộn. Nếu ai đó quan tâm đến vấn đề đó thì hãy để lại lời nhắn nhủ.
<?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;
}
?>
Cách sử dụng, ví dụ:tạo một mảng như:
<?php $members = array(1,2,3,4); ?>
hoặc
<?php $members = array("name1","name2","name3","name4"); ?>
sau đó gọi hàm để tạo lịch biểu của bạn dựa trên mảng trên:
<?php $schedule = scheduler($members); ?>
Để hiển thị lịch biểu mảng được kết quả, bạn chỉ cần làm như bên dưới hoặc bất cứ thứ gì bạn thích:Đoạn mã nhỏ này hiển thị lịch biểu ở định dạng đẹp nhưng vẫn sử dụng nó theo cách bạn thích.
<?php
foreach($schedule AS $round => $games){
echo "Round: ".($round+1)."<BR>";
foreach($games AS $play){
echo $play["Home"]." - ".$play["Away"]."<BR>";
}
echo "<BR>";
}
?>
Để lại ghi chú nếu nó phù hợp với bạn hoặc nếu bạn quan tâm đến phiên bản 2 chiều với tính năng xáo trộn.