Php 是否可以采用阵列中循环?
因此,这个功能的重点是根据球员排名创建平衡的球队。我的原始代码工作得很好:Php 是否可以采用阵列中循环?,php,arrays,Php,Arrays,因此,这个功能的重点是根据球员排名创建平衡的球队。我的原始代码工作得很好: function playerCreate(){ global $teams, $players; //find the average captain MMR $averageTeams = averageteams(); sortTeams(); //Any captain above average add the lowest MMR player for($i = 0; $i < count($teams
function playerCreate(){
global $teams, $players;
//find the average captain MMR
$averageTeams = averageteams();
sortTeams();
//Any captain above average add the lowest MMR player
for($i = 0; $i < count($teams);$i++){
if ($teams[$i]['totalMMR'] > $averageTeams){
addPlayer($i,0);
}
//Any captain below average MMR add the highest MMR player
else {
addPlayer($i,count($players)-1);
}
}}
以下是三个阵列:
$captains = array();
for ($i = 1; $i <= 40; $i++){
$players[] = array('name' => 'Player ' . $i, 'MMR' => rand(2800,4200));
}
for ($i = 1; $i <= 10; $i++){
$captains[] = array('name' => 'Captain ' . $i, 'MMR' => rand(3200,4200));
}
$teams = array();
//put captains on teams
for($i = 0;$i < count($captains); $i++){
$teams[] = array('name' => 'Team ' . ($i + 1), 'captain' => $captains[$i], 'players' => array(), 'totalMMR' => $captains[$i]['MMR']);
}
我想我明白了。我将函数更改为:
function playerCreate(){
global $teams, $players;
//find the average captain MMR
$averageTeams = averageteams();
$belowAverage = 0;
$aboveAverage = 0;
sortTeams();
for($i = 0; $i < count($teams);$i++){
if ($teams[$i]['totalMMR'] > $averageTeams){
$aboveAverage++;
}
else {
$belowAverage++;
}
}
for($y = 0; $y < $belowAverage; $y++){
addPlayer($y,count($players)-1);
}
for($z = count($teams)-1;$z > count($teams) - 1 - $aboveAverage; $z--){
addPlayer($z,0);
}
}
函数playerCreate(){
全球$团队$玩家;
//找到平均队长MMR
$averageTeams=averageTeams();
$belowAverage=0;
$overaverage=0;
sortTeams();
对于($i=0;$i$averageTeams){
$高于平均水平++;
}
否则{
$belowAverage++;
}
}
对于($y=0;$y<$belowAverage;$y++){
addPlayer($y,count($players)-1);
}
对于($z=计数($teams)-1;$z>计数($teams)-1-$over average;$z--){
addPlayer($z,0);
}
}
您可以发布$averageTeams、$teams、$Player的示例数组值吗?这肯定会有帮助。Done$AverageTeam只是一个调用我的函数之一的变量。当我试图将函数直接调用到比较中时,感觉很奇怪。addPlayer()呢?现在也添加了,但我想我最终找到了答案。也许不是最有效的方法。但它起了作用。你能弄明白这一点,真是太好了。
function addPlayer($team,$newPlayer){
global $teams, $players;
$teams[$team]['players'][] = $players[$newPlayer];
$teams[$team]['totalMMR'] += $players[$newPlayer]['MMR'];
unset($players[$newPlayer]);
$players = array_values($players);
}
function playerCreate(){
global $teams, $players;
//find the average captain MMR
$averageTeams = averageteams();
$belowAverage = 0;
$aboveAverage = 0;
sortTeams();
for($i = 0; $i < count($teams);$i++){
if ($teams[$i]['totalMMR'] > $averageTeams){
$aboveAverage++;
}
else {
$belowAverage++;
}
}
for($y = 0; $y < $belowAverage; $y++){
addPlayer($y,count($players)-1);
}
for($z = count($teams)-1;$z > count($teams) - 1 - $aboveAverage; $z--){
addPlayer($z,0);
}
}