对于像这样的数组:
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。我没有玩转换原始数组到变量,执行数学,然后再转换回单维数组,但它不会做,因为数组可能每次都有唯一的键......嗯......
答案 0 :(得分:1)
基本上您要做的是通过引用键名a
,b
等将值添加到数组中。您应该能够这样做:
$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] => )