使if语句更干燥

时间:2019-01-23 23:24:52

标签: php

我正在寻找一种使此代码更干燥的方法。 最好的方法是什么?

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;
}

1 个答案:

答案 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);