我正在寻找一种使此代码更干燥的方法。 最好的方法是什么?
if(array_key_exists($var1, $arr)) {
$var1 = 'etc/'. $var1;
}
if(array_key_exists($var2, $arr)) {
$var2 = 'etc/'. $var2;
}
if(array_key_exists($var3, $arr)) {
$var3 = 'etc/'. $var3;
}
if(array_key_exists($var4, $arr)) {
$var4 = 'etc/'. $var4;
}
答案 0 :(得分:3)
通常,每当您发现变量具有这样的递增名称时,都应该使用数组,而不是单独的变量。然后,您可以轻松地遍历数组。
因此,将所有$varN
变量替换为数组$vars
,然后执行以下操作:
foreach ($vars as &$v) {
if (array_key_exists($v, $arr)) {
$v = '/etc/' . $v;
}
}
参考变量&$v
使分配给该变量的操作更新数组。
您还可以对数组使用array_map()
:
$vars = array_map(function($v) use ($arr) {
if (array_key_exists($v, $arr)) {
return '/etc/' . $v;
} else {
return $v;
}
}, $vars);