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; 
}

これで、(キーとして) 日付に基づく適切な配列が作成され、カレンダーを単純にループして、現在の日付のキーを持つ項目があるかどうかを確認できます。その場合、少なくとも 1 人が欠席したことになります。実際の例については、デモを参照してください

于 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 に答える