汇总数组值

时间:2020-09-07 13:48:55

标签: php arrays drupal sum

Array
(
    [0] => Array( [0] => Array( [value] => 25 ) )
    [1] => Array( [0] => Array( [value] => 75 ) )
    [2] => Array( [0] => Array( [value] => 10 ) )
    [3] => Array( [0] => Array( [value] => 10 ) )
)

我正在使用drupal中的自定义模块,需要总结一下[value], 但是我尝试使用array_column,array_sum的不同方法,但是没有得到解决方案。 任何帮助,将不胜感激。谢谢。

代码

$contributionDetails = $node->get('field_contributions')->getValue();              
foreach ( $contributionDetails as $element ) {
    $p = Paragraph::load( $element['target_id'] );
    $text[] = $p->field_contribution_percentage->getValue();             
}

3 个答案:

答案 0 :(得分:1)

几个循环和一个累加器是实现此目的的一种方法

$tot = 0;
foreach ($array as $a){
    foreach ($a as $b){
        $tot += $b['value'];
    }
}
echo $tot;

或者,如果您确定内部数组永远只出现一次。

$tot = 0;
foreach ($array as $a){
    $tot += $a[0]['value'];
}
echo $tot;

或使用您刚发布的代码

$contributionDetails = $node->get('field_contributions')->getValue();              
$tot = 0;
foreach ( $contributionDetails as $element ) {
    $p = Paragraph::load( $element['target_id'] );
    $text[] = $p->field_contribution_percentage->getValue();
    $tot += $p->field_contribution_percentage->getValue();
}
echo $tot;

答案 1 :(得分:1)

因此,您有一个包含2个具有“值”索引的数组的数组,您只需要使用嵌套的foreach和变量$sum循环每个数组,该变量将在每次迭代中求和。

尝试以下代码:

<?php 

$sum = 0;
foreach($array as $value) {
    foreach ($value as $v){
        $sum += $v['value'];
    }
}

echo $sum;

这将输出120

答案 2 :(得分:1)

您可以在此处使用array_map而不是累加器:

$arraySum = array_map(function ($v) {
  return reset($v)['value'];
}, $text);

print_r(array_sum($arraySum)); // 120

编辑,例如:

$values = [
    [['value' => 25]],
    [['value' => 75]],
    [['value' => 10]],
    [['value' => 10]],
];

echo array_sum(array_map(function ($v) {
  return reset($v)['value'];
}, $values)); // 120
相关问题