Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果未设置,则初始化php_Php_Associative Array - Fatal编程技术网

如果未设置,则初始化php

如果未设置,则初始化php,php,associative-array,Php,Associative Array,我发现自己经常做以下事情: if (isset($objs[$key]){ $objs[$key] += val; } else { $objs[$key] = $val; } 有更好的方法吗? 另一种方法可以是: $objs[$key] = isset($objs[$key]) ? $objs[$key] + $val : $val 有更好的方法吗?如果您总是添加数字。。。您可以这样做,为每个条目保留一行代码,这可能比您现有的解决方案更可取,也可能不可取 $objs = a

我发现自己经常做以下事情:

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

最简单的简化方法是函数通过引用获取阵列并对代码进行重复数据消除

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


但是,如果您知道数组的形状,那么您的操作应该基于此。在这种情况下,使用数组填充键或类似键创建数组。

我刚刚发现一个非常相关的问题:
$arr[$key] = ($arr[$key] ?? 0) + $value;