【问题标题】:How To Get Array Sum如何获得数组总和
【发布时间】:2018-03-30 05:47:48
【问题描述】:

我有 2 个数组。

$fruits = [
    'mango' => 20,
    'apple' => 30,
    'orange' => 10,
    'banana' => 5,
];

$purchased = ['mango','banana'];

如何获得仅在 $purchased 数组上可用的 $fruits 数组上的值的总和?即得到 sum = 25

【问题讨论】:

  • 您有没有尝试解决这个问题?如果你有,请在你的问题中包含你的代码和研究,以显示什么对你不起作用。如果没有,您应该先尝试自己解决它,然后在此处发布代码和研究。它也让其他人更容易回答您的问题!

标签: php arrays sum filtering


【解决方案1】:

尝试循环 -

$sum = 0;
foreach($purchased as $v) {
   $sum += (!empty($fruits[$v]) ? $fruits[$v] : 0); 
}

【讨论】:

    【解决方案2】:
    1. 过滤$fruits 数组以仅保留购买的密钥。
    2. 对剩余的所有值求和。

    这是一种基于函数的方法,它翻转$purchased 元素的键和值,然后过滤$fruits,然后对剩余的值求和。

    代码:(Demo)

    $fruits = [
        'mango' => 20,
        'apple' => 30,
        'orange' => 10,
        'banana' => 5,
    ];
    
    $purchased = ['mango','banana'];
    echo array_sum(array_intersect_key($fruits,array_flip($purchased))),"\n";
    
    $purchased = ['mango','banana','orange','apple'];
    echo array_sum(array_intersect_key($fruits,array_flip($purchased))),"\n";
    
    $purchased = [];
    echo array_sum(array_intersect_key($fruits,array_flip($purchased)));
    

    输出:

    25
    65
    0
    

    *注意,这不会像循环那么快,但它确实允许单行操作并且不需要声明 tally 变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-23
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多