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

有没有更好的方法?

如果您总是添加数字...您可以执行类似的操作来为每个条目保留一行代码,这可能比您现有的解决方案更可取,也可能不是。

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

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

如果您使用 php 7,您还可以使用新的 ?? 运算符(假设所有值都是整数):

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

但是,如果您知道数组的形状,则应该以此为基础进行操作。在这种情况下使用 array_fill_keys 或类似方法创建数组。