如何解决汇总数组值
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();
}
解决方法
几个循环和一个累加器是实现此目的的一种方法
$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
$sum = 0;
foreach($array as $value) {
foreach ($value as $v){
$sum += $v['value'];
}
}
echo $sum;
这将输出120
,您可以在此处使用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]],];
echo array_sum(array_map(function ($v) {
return reset($v)['value'];
},$values)); // 120
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。