我發現自己做了以下頗有幾分:PHP初始化,如果沒有設置
if (isset($objs[$key]){
$objs[$key] += val;
} else {
$objs[$key] = $val;
}
有沒有更好的方式來做到這一點? 另一種方式可以是:
$objs[$key] = isset($objs[$key]) ? $objs[$key] + $val : $val
有沒有更好的辦法?
我發現自己做了以下頗有幾分:PHP初始化,如果沒有設置
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;
}
}
我剛剛發現一個非常相關的問題:http://stackoverflow.com/questions/308835/is-it-good-practice-to-initialize-the-elements-in-an-associative-array-in-php ?RQ = 1 – ajon