增加数组中未设置变量/新键的好方法

And*_*zzi 0 php lazy-initialization

由于某种原因,我经常发现自己做这样的事情:

foreach($source as $key => $value) {
    if (!isset($arr[$key])) {
        $arr[$key] = 0; // or any other value
    }
    $arr[$key] += something($value);
}
Run Code Online (Sandbox Code Playgroud)

当我拥有众所周知的数据源时,有时我会做:

foreach($source as $key => $value) {
    @$arr[$key] += something($value);
}
Run Code Online (Sandbox Code Playgroud)

为了避免日志垃圾邮件(我不想从日志中删除警告或通知)

还有其他更紧凑,更智能或更美的方法吗?

Nie*_*sol 5

PHP7有最简单的选择:

$arr[$key] = ($arr[$key] ?? 0) + something($value);
Run Code Online (Sandbox Code Playgroud)

如果您不处于更新的前沿,则可以使用这个更冗长但同样正确的版本:

$arr[$key] = (isset($arr[$key]) ? $arr[$key] : 0) + something($value);
Run Code Online (Sandbox Code Playgroud)

您不应该像这样简单地抑制错误。