PHP - 更新单维数组(通过在键值中添加或减去值)

时间:2014-01-26 23:38:33

标签: php arrays sum

对于像这样的数组:

Array1 ( [a] => 1 [b] => 2 [c] => 7 [d] => )

如果带有变量匹配的键,我想更新某些值。

例如,我有两个变量(a = 0.5和c = 0.25)。我可能还有一个或两个以上的变量需要添加到数组中。

在我有两个变量(a = 0.5和c = 0.25)的情况下。

可以通过将适当的变量添加到数组中的相应键来更新数组吗?

最终结果:

Array1 ( [a] => 1.5 [b] => 2 [c] => 7.25 [d] => )

无法想到一种向原始数组添加值的方法(来自单个数组,多维数组或键匹配的变量)。我是一个新手来添加或更新数组的键值,我现在超级坚持这些。尝试各种各样的事情。谢谢!

PS。我没有玩转换原始数组到变量,执行数学,然后再转换回单维数组,但它不会做,因为数组可能每次都有唯一的键......嗯......

1 个答案:

答案 0 :(得分:1)

基本上您要做的是通过引用键名ab等将值添加到数组中。您应该能够这样做:

$array['a'] += $value_to_add;

...但如果变量不存在,您可能会得到未定义的索引错误。因此,最好的方法是设置密钥,如果它不存在:

if(!array_key_exists('a', $array))
    $array['a'] = 0;

$array['a'] += $new_value;

现在,如果你正在谈论像你的例子那样拥有一个数组:

Array1 ( [a] => 1 [b] => 2 [c] => 7 [d] => )

......以及这些变量:

$a = 0.5;
$c = 0.25;

...并且想要将未知变量名称随意添加到阵列中各自的键,您需要get the variable name as a string以便在阵列中搜索它。

如果是这种情况,最好将变量添加到数组中:

$vars_to_add = array(
    'a' => 0.5,
    'c' => 0.25
);

...然后你可以在新数组上做一个简单的循环,将它们添加到原始数组中:

foreach($vars_to_add as $key => $current) {
    if(!array_key_exists($key, $original_array))
        $original_array[$key] = 0; // initialize blank variable

    // add new value to original array
    $original_array[$key] += $current;
}

$original_array的最终结果如下:

Array1 ( [a] => 1.5 [b] => 2 [c] => 7.25 [d] => )