1

我正在构建一个日历应用程序,它允许我们的管理团队输入员工假期、培训天数、病假天数等,并且所有员工都可以查看任何一天谁进出。日历是按照记录休息日的机制构建的。我正在努力显示谁什么时候下班。使用 print_r 我从服务器返回以下信息,显示姓名、日期和缺席原因:

Array ( 
[0] => stdClass Object ( [name] => Becca [date] => 2012-10-10  [reason] => Sick ) 
[1] => stdClass Object ( [name] => Frank [date] => 2012-09-12 [reason] => Sic ) 
[2] => stdClass Object ( [name] => Frank [date] => 2012-10-14 [reason] => Sic ) 
[3] => stdClass Object ( [name] => Paola [date] => 2012-10-10 [reason] => Sic ) 
[4] => stdClass Object ( [name] => Clive [date] => 2012-10-14 [reason] => Hol ) ) 

我可以遍历并显示一些姓名和日期,但如果在给定日期有多个人离开(例如 Becca、Paola),我相信只显示姓氏,因为密钥必须是唯一的。以下代码执行此操作,其中 'date("Ymd", $date)' 是在日历上打印日期的方法:

foreach ($absenceArray as $dateofabsence=>$name){
    if (date("Y-m-d", $date) == $dateofabsence){
        $showname[$x] = $name; 
    }   
}   

有人可以演示我如何遍历上述数组并将每个名称链接到我日历中的相应日期。

我很抱歉,我无疑没有正确解释自己,但我的大脑已经疲惫不堪。

4

2 回答 2

2

如果您想查看在给定日期缺席的人,我将首先解析数组以具有基于日期的数组作为键。尤其是在您想将这些内容添加到日历中的环境中,它可能会很有用。

$absenceByDate = array();
foreach ($absenceArray as $index => $record) {
    if (!array_key_exists($record->date, $absenceByDate)) {
        $absenceByDate[$record->date] = array();
    }

    $absenceByDate[$record->date][] = $record; 
}

现在您将拥有一个基于日期(作为键)的漂亮数组,您可以简单地循环浏览日历并检查是否存在具有当前日期键的项目。如果是这样的话,至少有一个人缺席。有关工作示例,请参阅演示

于 2012-09-12T16:48:10.360 回答
0

当遍历这个数组时,键将是数字,“值”将是一个对象,正如您在 print_r 转储中看到的那样。所以要走的路是这样的:

$showname = array();
foreach($absenceArray as $object)
{
  if(date("Y-m-d", $date) === $object->date)
  {
    $showname[] = $object->name;
  }
}
于 2012-09-12T16:51:04.613 回答