PHP初始化如果没有设置


php initialize if not set

我发现自己经常这样做:

if (isset($objs[$key]){
    $objs[$key] += val;
} else {
    $objs[$key] = $val;
}

有更好的方法吗?另一种方法是:

$objs[$key] = isset($objs[$key]) ? $objs[$key] + $val : $val

有更好的方法吗?

最简单的简化方法可能是一个函数通过引用获取数组并删除重复的代码。

如果你正在使用php 7,你也可以使用新的??操作符(假设所有值都是整数):

$arr[$key] = ($arr[$key] ?? 0) + $value;

然而,如果你知道数组的形状,你应该基于它来操作。使用array_fill_keys或类似的方法创建数组

如果你总是在加数字…您可以这样做,为每个条目保留一行代码,这可能比您现有的解决方案更可取,也可能不可取。

$objs = array();
addvalue($objs, "dog", 2);
addvalue($objs, "dog", 5);
// $objs['dog'] will = 7
function addvalue(& $var, $key, $value){
    if (isset($var[$key])){
        $var[$key] += $value;
    } else {
        $var[$key] = $value;
    }
}