php;添加到循环中多维数组的值

php;添加到循环中多维数组的值,php,arrays,multidimensional-array,foreach,associative-array,Php,Arrays,Multidimensional Array,Foreach,Associative Array,所以我试图在一个假的rpg中制作一个统计增长的数组。看起来像这样 // base array // $base: starting base stats // $growth: growth rate per rng $growths = array( 'HP' => array (70 => 20), 'STR' => array (50 => 7), 'MAG' => array (35 => 2), 'SKL' =>

所以我试图在一个假的rpg中制作一个统计增长的数组。看起来像这样

// base array
// $base: starting base stats
// $growth: growth rate per rng
$growths = array(
    'HP' => array (70 => 20),
    'STR' => array (50 => 7),
    'MAG' => array (35 => 2),
    'SKL' => array (45 => 6),
    'SPD' => array (50 => 8),
    'LCK' => array (55 => 5),
    'DEF' => array (45 => 6),
    'RES' => array (15 => 4),
);    

//rng calculator
for ($x = 0; $x <= 20; $x++) {
    foreach ($growths as $stat_name => $info) {
        $roll = rand(0,100);
        foreach ($info as $growth => $base) {
            if ($roll <= $growth) {
                $info[$growth] = ++$base;
                print "(UP!) ";
            }
            echo "$stat_name: $base<br/ >";
        }
    }
} 
//基数组
//$base:起始基本统计信息
//$growth:每rng的增长率
$growths=数组(
“HP”=>阵列(70=>20),
'STR'=>数组(50=>7),
'MAG'=>阵列(35=>2),
'SKL'=>数组(45=>6),
“SPD”=>阵列(50=>8),
‘LCK’=>阵列(55=>5),
“DEF'=>数组(45=>6),
'RES'=>数组(15=>4),
);    
//rng计算器
对于($x=0;$x$info){
$roll=兰特(0100);
foreach($info as$growth=>$base){

如果在第一个foreach循环中($roll),则将
$growths
的键分配给
$stat\u name
,并将值分配给
$info
。这些是临时变量。如果更改它们,则原始数组不受影响

// This won't work because $info is temporary.
$info[$growth] = ++$base;
相反,只需参考原始阵列:

// Do this instead.
$growths[$stat_name][$growth] = ++$base;
引用


只需使用
foreach($stat\u name=>&$info)替换代码中的相应行。

您不想
roll(1100)
?不确定-roll()和rand()之间有什么区别?哦,对不起,是的,我的意思是
rand(1100)
。在我看来,这就像一个纸笔角色扮演游戏,我认为这是一个百分位骰子,通常不能为零。@EM6:在这种情况下,你可能应该接受(并可能向上投票)这个答案。