对数组值求和

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 中开发一个自定义模块,需要总结 [值], 然而,我使用 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();             

}


BIG阳
浏览 115回答 3
3回答

千万里不及你

您可以在此处使用 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

牛魔王的故事

几个循环和累加器是实现此目的的一种方法$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;

紫衣仙女

因此,您有一个包含 2 个具有索引“值”的数组的数组,您只需使用嵌套的 foreach 和一个变量来循环每个数组$sum 其总和每次迭代时增加值。试试这个代码:<?php&nbsp;$sum = 0;foreach($array as $value) {&nbsp; &nbsp; foreach ($value as $v){&nbsp; &nbsp; &nbsp; &nbsp; $sum += $v['value'];&nbsp; &nbsp; }}echo $sum;这将输出 120
打开App,查看更多内容
随时随地看视频慕课网APP