user537137 user537137 - 4 months ago 14
PHP Question

Getting sum from array

I have 2 arrays that are shown below.

I need to get the sum of the progress (in the tasks array) for each milestone that it relates to.

So in the tasks array, I can see that the sum of the progress for 1578453e53090b (Wireframe milestone) is 15.

The ideal result would be to append the sum total of progress onto each milestone. Hope that makes sense.

$milestones =
Array
(
[0] => Array
(
[id] => 1578453e53090b
[milestone] => Wireframe
[assigned_to] => 9
)

[1] => Array
(
[id] => 1578453e530975
[milestone] => Development
)

[2] => Array
(
[id] => 1578453e530943
[milestone] => Design
[assigned_to] => 2
)

)


$tasks =
Array
(
[0] => Array
(
[id] => 15786dc59333f2
[status] => Open
[progress] => 5
[milestone] => 1578453e53090b
)

[1] => Array
(
[id] => 15786dc669d451
[status] => Open
[progress] => 10
[milestone] => 1578453e53090b
)

[2] => Array
(
[id] => 15786dc7ccbea3
[status] => Open
[progress] => 20
[milestone] => 1578453e530943
)
)

Answer

One of the ways to do this is to just use foreach. Use the first foreach for the milestones getting the ID that will match the second foreach for tasks in milestone.

After that, use a simple $total container to be used continually andatch them using a simple if.

foreach($milestones as &$m) {
                //     ^ add reference to make changes
    $total = 0; // initialize total holder
    foreach($tasks as $task) {
        if($task['milestone'] === $m['id']) { // if it matches
            $total += $task['progress']; // add
        }
    }

    $m['total'] = $total; // after its done, add another key pair being total and its value
}
Comments