【问题标题】:PHP - update a single dimensional array (by adding or subtracting values from key values)PHP - 更新一维数组(通过从键值中添加或减去值)
【发布时间】:2014-01-27 07:48:02
【问题描述】:

对于像这样的数组:

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。我不是在玩将原始数组转换为变量,执行数学运算,然后再转换回一维数组,但它不会这样做,因为数组可能每次都有唯一的键......嗯......

【问题讨论】:

    标签: php arrays sum


    【解决方案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] => )
    

    【讨论】:

    • scrowler - 我认为这样可以。 'array_key_exists' 在这里很关键。我会认为可以扩展 foreach 内的 if/else 条件,并针对其他计算进行调整?我正在考虑添加多个 if/elseif/else (以便如果某个键如果具有某个值,则执行加法,如果没有则执行减法。非常感谢 scrowler!
    • 当然,您可以在该语句中执行任何操作。您只需要弄清楚如何区分要做什么。最简单的方法可能是使用不同的数组(请记住,+= -0.5 实际上会减去 0.5)用于加法/减法、乘法和除法等
    • scrowler - 比如说,我想在 foreach 中添加另一个条件,如果 $original_array 中存在名称为 x 的键,我将在其中执行值的减法;我补充说: if(array_key_exists('x', $original_array)) 但什么也没发生;我正在调试它以查看值在哪里以及是否发送正确
    • 我添加了 "if(array_key_exists($other_key_name, $original_array))" 来检查其他键并执行其他计算,但它是在 foreach 循环之外添加的。 “array_key_exists”是关键,并且有帮助。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-05
    • 2019-04-12
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多