每3次循环的foreach循环中的Sum值

时间:2018-05-22 04:20:45

标签: php arrays laravel-blade

var html = ''
if (menuBar.menu_flag_link == 0) {
    var link_menu =
        <NavLink
              to='javascript:;'
            exact>menuBar[i].menu_title</
} else {
        var link_menu =
            <NavLink
                    to="/"
                    exact>menuBar[i].menu_title</NavLink>
}
html += '<li>' + link_menu 
console.log(html) ==> <li>[object Object] // after being executed
console.log(html) ==> <li><a href="/">Dashboard</a> // which are expected

例如:

value1 = 1

value2 = 2

value3 = 3

value4 = 4

value5 = 5

value6 = 6

value7 = 7

value8 = 8

value9 = 9

value10 = 10

value11 = 11

value12 = 12

我想每3次循环计算$ data,结果是

结果lopping1 = 6

结果lopping2 = 15

结果lopping3 = 24

结果lopping4 = 33

注意:

6 = 1 + 2 + 3

15 = 4 + 5 + 6

24 = 7 + 8 + 9

33 = 10 + 11 + 12

我该怎么办?

4 个答案:

答案 0 :(得分:1)

这是Blade Syntax的回答:

@foreach(array_chunk($group, 3) as $value)
    <td>
        @php
            echo array_reduce($value, function($sum, $item) {
                    $sum +=$item->value;
                    return $sum;
                })
        @endphp
    </td>
@endforeach

或纯PHP:

<?php
$groupSum = [];
foreach (array_chunk($group, 3) as $value) {
    $groupSum[] = array_reduce($value, function ($sum, $item) {
        $sum += $item->value;
        return $sum;
    });
}

print_r($groupSum);

这一切都是因为作者问题中有对象。

答案 1 :(得分:0)

你需要计算迭代并保存它。就像这样。

$collection=array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
$count=1;
$result=array();
foreach ($collection as $value) {
    $result[]=$value;
    $count++;
    if ($count==4) {

    $data=array_sum($result);
    $result = array_map(function($v){ return 0; }, $result);
    $count=1;
    echo $data;
    echo '<br>';
}
} 

答案 2 :(得分:0)

您可以使用array_chunk和array_sum

$array_number = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);

$test = array_chunk($array_number, 3);
$i = 0;
while($i < count($test)){
    echo array_sum($test[$i]);
    $i++;
}

对于你,也许在选项之下

@foreach ($group->chunk(3) as $chunk)
    {{$chunk->sum()}}
@endforeach

答案 3 :(得分:0)

您可以将数组循环到i+3并相应地添加值。

如果你的数组的元素是3的倍数,那么你可以这样做

for($i=2; $i<count($arr); $i+=3) {
    $data = ($arr[$i] + $arr[$i-1] + $arr[$i-2]);
    echo "<td>".$data."</td>";
}

如果您的数组的元素少于3,那么您可以执行此操作

for($i=0; $i<count($arr); $i++) {
    $data += $arr[$i];
}   
echo "<td>".$data."</td>";

如果你的数组的元素大于3但不是3的倍数,那么你可以这样做

$post = count($arr) % 3;
for($i=2; $i<(count($arr) - $post); $i+=3) {
    $data = ($arr[$i-1] + $arr[$i-2] + $arr[$i]);
    echo "<td>".$data."</td>";
}
$last = "";
for($i=(count($arr) - $post); $i<count($arr); $i++) {
    $last += $arr[$i];
}
echo "<td>".$last."</td>";

结合所有条件

if (count($arr) < 3) {
    $data = "";
    for($i=0; $i<count($arr); $i++) {
        $data += $arr[$i];
    }   
    echo "<td>".$data."</td>";
}else if (count($arr) % 3 == 0) {
    for($i=2; $i<count($arr); $i+=3) {
        $data = ($arr[$i-1] + $arr[$i-2] + $arr[$i]);
        echo "<td>".$data."</td>";
    }
}else{
    $post = count($arr) % 3;
    for($i=2; $i<(count($arr) - $post); $i+=3) {
        $data = ($arr[$i-1] + $arr[$i-2] + $arr[$i]);
        echo "<td>".$data."</td>";
    }
    $last = "";
    for($i=(count($arr) - $post); $i<count($arr); $i++) {
        $last += $arr[$i];
    }
    echo "<td>".$last."</td>";
}