主要原因:
目前在学习PHP的过程,想考验一下自己制作一个足球比赛单循环的赛程表出来。
算法:
*算法
把队伍排列成2行(偶数队伍),固定第一行的第一个队伍,从第一行第二个队伍开始顺时针滚动。
但我在写代码的时候怎么也写不出来(可能是我也刚接触)
我所设想的写法应该是:
3层for循环,第一层是轮次,第二层是主队,第三层是客队。
进行for echo展示赛程表。
下面代码是我自己在研究过程中写出来的,跟我要的结果完全不一样啊,不知道怎么写了,希望PHP大牛帮忙!
<?php $team = array('武汉','广州','北京','上海','四川','香港','台湾'); //var_dump($team); $max = count($team); //var_dump($max); $teammax = $max - 1 ; for ($i=0;$i<$max;$i++) { for ($o=0;$o<=$teammax;$o++) { if ($i == $o) { continue; } else { echo $team[$i] . ' vs ' . $team[$o]; if ($o == $teammax){ echo "<hr>"; } else{ echo "<br/>"; } } } }?>
<?php $team = array('1','2','3','4','5','6','7','8'); $max = count($team); //var_dump($max); $lunci = $max - 1; //var_dump($lunci); for ($i=0;$i<$lunci;$i++) { echo $team[$w] .' vs ' . $team[$b-$i]; echo '<br/>'; }?>
你这是求 7 中取 2 的组合
按求组合的通用算法即可(精华区有相关代码)
规则看不太懂 能给个结果实例要你想要的结果展示出来吗 这样别人才能更好的知道你想要的结果是什么
自己研究的话,可以这样写
$team = array('武汉','广州','北京','上海','四川','香港','台湾');$max = count($team);$teammax = $max - 1 ;for ($i=0;$i<$max;$i++) { for ($o=$i+1;$o<=$teammax;$o++) { if ($i == $o) { continue; }else { echo $team[$i] . ' vs ' . $team[$o]; if ($o == $teammax){ echo "<hr>"; } else{ echo "<br/>"; } } }}武汉 vs 广州
规则看不太懂 能给个结果实例要你想要的结果展示出来吗 这样别人才能更好的知道你想要的结果是什么
实力结果应该是
第一轮
也就是把
1234
5678
上下对阵
1523
6784
1652
7843
形成罗盘算法的运转(固定1 转动2~8)
自己研究的话,可以这样写
$team = array('武汉','广州','北京','上海','四川','香港','台湾');$max = count($team);$teammax = $max - 1 ;for ($i=0;$i<$max;$i++) { for ($o=$i+1;$o<=$teammax;$o++) { if ($i == $o) { continue; }else { echo $team[$i] . ' vs ' . $team[$o]; if ($o == $teammax){ echo "<hr>"; } else{ echo "<br/>"; } } }}武汉 vs 广州
$arr = array(4,3,2,1,5,6,7,8);
$round = 0; //设置轮次
$arr1 = array_merge($arr, $arr);
$round %= 8;
echo $arr1[$round],$arr1[$round+1],$arr1[$round+2],$arr1[$round+3];
这个意思?
$ar = array(1, 2, 3, 4, 5, 6, 7, 8);$len = count($ar);for($i=1; $i<$len; $i++) { foreach(array_chunk($ar, $len/2) as $v) { echo join('', $v), PHP_EOL; } $t = array_splice($ar, 1, 1); $ar = array_merge($ar, $t); echo PHP_EOL;}1234