繁体   English   中英

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

[英]php; Adding to the value of a multidimensional array in a loop

因此,我正在尝试为伪造的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/ >";
        }
    }
} 

我唯一的问题是rng calculator拒绝存储在原始数组后的新$base值。 我是在做错什么,还是只需要从头开始重建阵列并尝试其他操作? 任何帮助,将不胜感激!

在你的第一个foreach循环,分配的关键$growths$stat_name和价值$info 这些是临时变量。 如果更改它们,则原始阵列不受影响。

// This won't work because $info is temporary.
$info[$growth] = ++$base;

相反,只需引用原始数组即可:

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

使用参考

只需使用foreach ($growths as $stat_name => &$info)来替换代码中的相应行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM