主要原因:
目前在学习PHP的过程,想考验一下自己制作一个足球比赛单循环的赛程表出来。
算法:
*算法
把队伍排列成2行(偶数队伍),固定第一行的第一个队伍,从第一行第二个队伍开始顺时针滚动。
但我在写代码的时候怎么也写不出来(可能是我也刚接触)
我所设想的写法应该是:
3层for循环,第一层是轮次,第二层是主队,第三层是客队。
进行for echo展示赛程表。
下面代码是我自己在研究过程中写出来的,跟我要的结果完全不一样啊,不知道怎么写了,希望PHP大牛帮忙!
"; } else{ echo "
"; } } } }?>
'; }?>
回复讨论(解决方案)
你这是求 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 "
"; } else{ echo "
"; } } }}
武汉 vs 广州
武汉 vs 北京
武汉 vs 上海
武汉 vs 四川
武汉 vs 香港
武汉 vs 台湾
--------------------------------------------------------------------------------
广州 vs 北京
广州 vs 上海
广州 vs 四川
广州 vs 香港
广州 vs 台湾
--------------------------------------------------------------------------------
北京 vs 上海
北京 vs 四川
北京 vs 香港
北京 vs 台湾
--------------------------------------------------------------------------------
上海 vs 四川
上海 vs 香港
上海 vs 台湾
--------------------------------------------------------------------------------
四川 vs 香港
四川 vs 台湾
--------------------------------------------------------------------------------
香港 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 "
"; } else{ echo "
"; } } }}
武汉 vs 广州
武汉 vs 北京
武汉 vs 上海
武汉 vs 四川
武汉 vs 香港
武汉 vs 台湾
--------------------------------------------------------------------------------
广州 vs 北京
广州 vs 上海
广州 vs 四川
广州 vs 香港
广州 vs 台湾
--------------------------------------------------------------------------------
北京 vs 上海
北京 vs 四川
北京 vs 香港
北京 vs 台湾
--------------------------------------------------------------------------------
上海 vs 四川
上海 vs 香港
上海 vs 台湾
--------------------------------------------------------------------------------
四川 vs 香港
四川 vs 台湾
--------------------------------------------------------------------------------
香港 vs 台湾
--------------------------------------------------------------------------------
你好,版主,你这样的写法我写过,最终生成的结果和我想要的结果是不一样的。
我所想的是
第一轮
1234
5678
第二轮
1523
6784
第三轮
1652
7843
以此类推这样的算法0.0
$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
5678
1345
6782
1456
7823
1567
8234
1678
2345
1782
3456
1823
4567