我在php中有一个重复的代码,我可以想象我可以以某种方式压缩成一个函数,并简单地多次调用该函数。我试着这样做,但似乎没有发生任何事情。这是对旧代码的重复:
if ($health_1 > $health_2) {
$health_left = '#7fba00';
$health_right = '#e81123';
} else if ($health_perlvl_1 == $health_perlvl_2) {
$health_left = '#0451ff';
$health_right = '#0451ff';
} else {
$health_left = '#e81123';
$health_right = '#7fba00';
}
对于其他统计数据,这个过程重复了大约12次。我决定试着把它压缩成这样:
function stat_color($stat_1,$stat_2,$color_left,$color_right) {
if ($stat_1 > $stat_2) {
$color_left = '#7fba00';
$color_right = '#e81123';
} else if ($stat_1 == $stat_2) {
$color_left = '#0451ff';
$color_right = '#0451ff';
} else {
$color_left = '#e81123';
$color_right = '#7fba00';
}
}
stat_color($health_1,$health_2,$health_left,$health_right);
但是颜色在以后需要的时候就不在那里了。有没有办法让它真正起作用呢?
发布于 2014-02-28 20:36:51
试试这个:
function stat_color($stat_1,$stat_2,&$color_left,&$color_right) {
这样,它就会更新您传递给函数的变量。
发布于 2014-02-28 20:38:32
当然,由于形参对于函数作用域是局部的,所以它们的值不能在函数外部使用。尝尝这个。
因为我们不能返回多个值,所以我使用了一个带有适当键的数组。
function stat_color($stat_1,$stat_2) {
$arr = array();
if ($stat_1 > $stat_2) {
$arr["color_left"] = '#7fba00';
$arr["color_right"] = '#e81123';
} else if ($stat_1 == $stat_2) {
$arr["color_left"] = '#0451ff';
$arr["color_right"] = '#0451ff';
} else {
$arr["color_left"] = '#e81123';
$arr["color_right"] = '#7fba00';
}
return arr;
}
您现在可以使用:
$colors = stat_color(stat1,stat2);
使用$colors["color_left"]
或$colors["color_right"]
来引用适当的颜色。
发布于 2014-02-28 20:42:47
您可以按如下方式返回字符串:
return array('#7fba00', '#e81123');
然后当你想再次得到它们的时候:
list($health_left, $health_right) = stat_color($health_1, $health_2);
您可以使用按引用传递变量来做到这一点,但它感觉不那么优雅。
https://stackoverflow.com/questions/22105222
复制