I have the following code that case-insensitively groups associative elements in a flat array and sums the related values, but I don't really understand how it works.
function add_array_vals($arr) {
$sums = [];
foreach ( $arr as $key => $val ) {
$key = strtoupper($key);
if ( !isset($sums[$key]) ) {
$sums[$key] = 0;
}
$sums[$key] = ( $sums[$key] + $val );
}
return $sums;
}
$array = ['KEY' => 5, 'TEST' => 3, 'Test' => 10, 'Key'=> 2];
$sums = add_array_vals($array);
var_dump($sums);
//Outputs
// KEY => int(7)
// TEST => int(13)
I have problem in two portion of above code one is:
if ( !isset($sums[$key]) ) {
$sums[$key] = 0;
}
another is:
$sums[$key] = ( $sums[$key] + $val );
In this portion, how does it identify the same key of array to sum them (because keys position is dynamic)?