提问者:小点点

如何从条件后的多维数组中求工资之和


在这个项目中,我有一个多维数组,它保存了一些雇员的姓名,职位,专业和工资。 我需要从数组中找到所有经理和所有员工的平均工资。

<!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>

我需要分别计算员工和管理人员的平均工资。 所以我想到在foreach()中放一个条件来检查谁是谁,然后对他们进行计数并保留他们工资的总和。 但它不能正常工作。 如果你能帮我的话我会很感激的。


共2个答案

匿名用户

基本上:

为了计算平均数,将所有不同的数字相加,然后将它们除以数字的总数。

所以这部分应该是对的。

请您从它们中检查每一个的数据类型:

$HMEAN=$SUMSALARY_E/$Cemployees; $GMEAN=$SUMSALARY_M/$CMANAGERS;

每个类型都应该是整数或int。

匿名用户

我看到了很多我想在你的代码中做不同的事情,但是我不知道你的上下文是什么。 在任何情况下,请查看您是否能够找到如何使用array_filterarray_maparray_sumcount来计算有问题的平均值,而无需显式循环。