Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的嵌套数组_Php_Arrays - Fatal编程技术网

PHP中的嵌套数组

PHP中的嵌套数组,php,arrays,Php,Arrays,我目前正在尝试为一款游戏创建一个团队生成器,该游戏根据玩家评级组织团队。在嵌套数组中添加播放器时,我遇到了一个小问题。我最终将向数组添加数据库调用。我不明白为什么在我尝试将球员添加到团队阵列后,我不能回显他们。随机数用于测试目的 $players = array(); $captains = array(); for ($i = 1; $i <= 40; $i++){ $players[] = array('name' => 'Player ' . $i, 'MMR' =>

我目前正在尝试为一款游戏创建一个团队生成器,该游戏根据玩家评级组织团队。在嵌套数组中添加播放器时,我遇到了一个小问题。我最终将向数组添加数据库调用。我不明白为什么在我尝试将球员添加到团队阵列后,我不能回显他们。随机数用于测试目的

$players = array();
$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));
}

//sort the players by MMR
usort($players, function($a, $b) {
  return $a['MMR'] - $b['MMR'];
});

 //sort the captains by MMR
usort($captains, function($a, $b) {
   return $a['MMR'] - $b['MMR'];
});

//put captains on teams
$teams = array();
for($i = 0;$i < count($captains); $i++){
  $teams[] = array('name' => 'Team ' . ($i + 1), 'captain' => $captains[$i], 'players' => array(), 'totalMMR' => $captains[$i]['MMR']);
}
$players=array();
$captains=array();
对于($i=1;$i‘Player’。$i,‘MMR’=>rand(28004200));
}
对于($i=1;$i‘船长’。$i,‘MMR’=>rand(32004200));
}
//按MMR对玩家进行排序
usort($players,function($a,$b){
返回$a['MMR']-$b['MMR'];
});
//按MMR对船长进行排序
usort($captains,function($a,$b){
返回$a['MMR']-$b['MMR'];
});
//让队长组队
$teams=array();
对于($i=0;$i$captains[$i],'players'=>array(),'totalMMR'=>$captains[$i]['MMR']);
}
我认为问题可能就在这里:

function addPlayer($team,$newPlayer){
  $teams[$team]['players'][] = $players[$newPlayer];
  $teams[$team]['totalMMR'] += $players[$newPlayer]['MMR'];
 }

addPlayer(0,0);

$output = '';
foreach($teams as $team){
  $output .= '<div class="teams">' . $team['name'] . '<br />' . $team['captain']['name'] . ': ' . $team['captain']['MMR'] . '<br />';
for ($i = 0; $i < count($team['players']); $i++){
$output .= $team['players'][$i]['name'] . ': ' . $team['players'][$i]['MMR'] . '<br />';
}
$output .= '</div>';
}
echo $output;
函数addPlayer($team,$newPlayer){
$teams[$team]['players'][=$players[$newPlayer];
$teams[$team]['totalMMR']+=$players[$newPlayer]['MMR'];
}
addPlayer(0,0);
$output='';
foreach($teams作为$team){
$output.=''.$team['name'].
.$team['captain'.['name'.]:'.$team['captain'.['MMR'.]; 对于($i=0;$i; } $output.=''; } echo$输出;
现在队长们都在呼应,但我添加的球员不是。任何帮助都将不胜感激

function addPlayer($team,$newPlayer){
    $teams[$team]['players'][] = $players[$newPlayer];
    $teams[$team]['totalMMR'] += $players[$newPlayer]['MMR'];
}
此函数中没有名为
$teams
的变量。如果要修改名为
$teams
的全局变量,则可以说
global$teams作为函数中的第一行


同样,对于
$players
(尽管您应该得到关于未定义索引的通知)。

这里的问题是您的函数无权访问
$teams
$players
。尝试使用
var\u dump
addPlayer
函数中回显这两个数组的内容。另外,请打开
错误报告
以报告
E\u通知
s,因为这样会显示问题。赵想告诉你,物体更适合这种行为,我完全同意!为此,您应该查看对象。感谢您的帮助。。。。我使用了数组,因为我将临时将数据从数据库拉入这些数组,然后将它们吐回数据库。物体还会更有用吗?@Nash:也许会。逻辑和代码最终会变得更清晰,至少……当您使用不存在的变量时,您更有可能收到警告和错误。(我知道这听起来很糟糕,但这是一件好事。如果您的PHP显示通知,这可能会让您对范围问题有所了解。)谢谢,我会在时间期限一到就检查这一答案。谢谢