jeudi 11 juin 2020

How to get the sum of salaries from a multidimentional array after condition

In this project i have a multidimentional array that keeps some employees names, their position, their speciality and their salary. I need to find the average salary of all the managers and all the employees from the array.

<!DOCTYPE html>
<html>
<head>
<meta sharset="UTF-8"/>
<title>Project3</title>
</head>
<body>
<?php
$employees = array(array("name" => "Nikolaou Nikolaos",
                         "occupation" => "Employee",
                         "salary" => 1500,
                         "specialty" => "Web Programmer"),
                   array("name" => "Papadopoulou Anna",
                         "occupation" => "Manager",
                         "salary" => 2300,
                         "specialty" => "Human resources management"),
                   array("name" => "Alexiou Nikoleta",
                         "occupation" => "Employee",
                         "salary" => 800,
                         "specialty" => "Secretary"),
                );

//Start of the function that prints the arrays in a specific way.
function printTable($table) 
{   
    foreach ($table as $employee => $list) {

        // Print a heading:
        echo "<h2 style=\"text-align:left; font-size:26px; font-family:times new roman; color:blue\">Employee #$employee</h2><ul>";

        // Print each district data:
        foreach ($list as $key => $value) {
            echo "<li style=\"text-align:left; font-size:18px; font-family:times new roman; color:black\">$key: $value</li>\n"; 
        }// End of nested FOREACH.

        // Close the list:
        echo '</ul>';

    } // End of main FOREACH.
}// End of the function.

//function that calculates and returns the average salary of employees and managers separately.
function calcMeanAges($table, &$hmean, &$gmean) 
{
    $cEmployees = 0;
    $sumsalary_e = 0;
    $cManagers = 0;
    $sumsalary_m = 0;
    foreach ($table as $occupation =>$list) {
        foreach ($list as $salary =>$value) {
            if ($occupation == "Employee") {
                $cEmployees++;
                $sumsalary_e += $salary['salary'];
            }
            if ($occupation == "Manager") {
                $cManagers++;
                $sumsalary_m += $salary['salary'];
            }
        }
    }
    $hmean = $sumsalary_e / $cEmployees;
    $gmean = $sumsalary_m / $cManagers;
}

//call of the function that calculates the average salaries.
calcMeanAges($employees, $h, $g); 
echo "$h<br>";
echo "$g";

//Printing the elements of the arrays
echo '<p style="color:red;font-size:28px;font-family:times new roman;"><b>Employees and managers</b></p><br>';

printTable($employees);
?>
    </body>
</html>

I need to calculate the average salaries of employees and managers separately. So i thought of putting a condition in the Foreach() to check who is who and then count them and keep the sum of their salary. But it doesn't work properly. I would appreciate some help.

Aucun commentaire:

Enregistrer un commentaire