我从头开始创建了一个循环函数,因为我认为它可能更容易获得相同的结果,并且还允许我使用直接填充字符串而不是数字的数组。
因为我从数据库中提取了一个名称列表并添加到一个数组中,所以我现在可以使用下面的函数直接安排它。无需额外步骤即可将数字链接到名称等。
请随意尝试,如果有效,请发表评论。
我还有一个版本,它允许 2 路(家庭和返回)日程安排和/或随机播放选项。如果有人对此感兴趣,那么也发表评论。
<?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;
}
?>
如何使用,例如创建一个数组,如:
<?php $members = array(1,2,3,4); ?>
或
<?php $members = array("name1","name2","name3","name4"); ?>
然后调用函数根据上面的数组创建你的日程安排:
<?php $schedule = scheduler($members); ?>
要显示结果数组时间表,只需执行以下操作或您喜欢的任何方式:
这个小代码以一种很好的格式显示日程安排,但你可以随意使用它。
<?php
foreach($schedule AS $round => $games){
echo "Round: ".($round+1)."<BR>";
foreach($games AS $play){
echo $play["Home"]." - ".$play["Away"]."<BR>";
}
echo "<BR>";
}
?>
如果它对您有用,或者如果您对带有随机播放的 2-way 版本感兴趣,请留言。