如何解决php中未定义的注意事项2和3
这是我的密码如何解决php中未定义的注意事项2和3,php,Php,这是我的密码 <?php $file = fopen("employee.txt","r"); $under_40=0; $salary_sum=0; $emplist=[]; $total_employees=0; echo "Names of all employees whose names end with son : <br/>"; while(!feof($file)) { $t
<?php
$file = fopen("employee.txt","r");
$under_40=0;
$salary_sum=0;
$emplist=[];
$total_employees=0;
echo "Names of all employees whose names end with son : <br/>";
while(!feof($file))
{
$total_employees++;
$fline=fgets($file);
list($name, $age, $dept, $salary)= explode(':',$fline);
if(preg_match("/son$/",$name))
{
echo $name."<br/>";
}
if($age<40)
{
$under_40++;
$salary_sum +=$salary;
if($salary>40000 )
{
$emplist[$name]=$salary;
}
}
}
if($total_employees>0)
{
if($under_40>0)
{
$percent=100*$under_40 / $total_employees;
echo "<br/>Percent of employees under 40 is :".$percent."%<br/>";
$avg= $salary_sum/$under_40;
echo "<br/>Averege salary of employees under 40 is :$".$avg."<br/>";
if(array_keys($emplist))
{
echo "<br/>Sorted list of employees under 40, with salries > \$40000 <br/>";
ksort($emplist);
echo "<table><tr><td>Name</td><td>Salary</td></tr>";
foreach ($emplist as $key=>$value)
{
echo "<tr><td>".$key."</td><td>\$".$value."</td></tr>";
}
echo"</table>";
}
else
{
echo"There are no employees under 40 who earned over \$40000 <br/>";
}
}
else
{
echo"There are no employees under 40 <br/>";
}
}
else
{
echo"There are no employees ";
}
fclose($file);
?>
预期产量为
姓名以son结尾的所有员工姓名:
约翰逊
爱迪生
莫里森
40岁以下员工的百分比为:40%
40岁以下员工的平均工资为:31000美元
40岁以下员工分类名单,salries>40000美元
姓名工资
哈里:43000美元
但是我越来越像这样了
姓名以son结尾的所有员工姓名:
注意:第12行C:\xampp\htdocs\lab2.php中未定义的偏移量:3
注意:第12行C:\xampp\htdocs\lab2.php中未定义的偏移量:2
约翰逊
爱迪生
莫里森
40岁以下员工的百分比为:50%
40岁以下员工的平均工资为:21000美元
40岁以下员工分类名单,salries>40000美元
姓名工资
Harry$43000您可以通过以下方式完成阵列:
list($name、$age、$dept、$salary)=数组_pad(explode(“:”,$fline),4,null)代码>这是否回答了您的问题?在本例中,这意味着explode(“:”,$fline)
没有返回至少包含四个元素的数组,但是list($name,$age,$dept,$salary)=
此时需要四个元素。所以你的输入数据(你完全忽略了向我们展示)目前正在处理的行中似乎至少没有三个:
。这是我的输入:Harry:30:HR:43000 Johnson:28:IT:20000 John Milton:50:Sales:60000 Edison:45:IT:50000 Morrison:46:IT:200000但如果我这样做,我将获得输出例如:姓名以儿子结尾的所有员工姓名:约翰逊·爱迪生·莫里森40岁以下员工的百分比是:50%40岁以下员工的平均工资是:$21000 40岁以下员工的排序列表,salries>40000美元姓名工资Harry$43000