php初始化如果没有设置

时间:2015-09-26 22:41:13

标签: php associative-array

我发现自己做了以下几点:

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

有没有更好的方法呢? 另一种方式可能是:

|id|page  |page_number
|1 |name1 |3
|2 |name2 |2
|3 |name3 |1
|4 |name2 |4

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

最简单的简化方法可以是通过引用获取数组并对代码进行重复数据删除的函数。

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

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

但是,如果你知道阵列的形状,你应该根据它的行动。在这种情况下使用array_fill_keys创建数组或类似。