Menu
Coddy logo textTech

まとめ:データ処理

CoddyのPHPジャーニー「論理とフロー」セクションの一部 — レッスン 45/68。

challenge icon

チャレンジ

簡単

3つの入力を受け取ります:カンマ区切りの従業員名のリスト、それに対応する1週間の労働時間のカンマ区切りリスト、および最小労働時間のしきい値です。最初の入力は Alice,Bob,Charlie,Diana,Eve という形式の名前、2番目の入力は 45,32,50,28,40 という形式の数値としての労働時間、3番目の入力は数値としての最小労働時間のしきい値(例:35)です。

3つの入力すべてを読み取り、適切な配列に変換してください。従業員名をキー、労働時間を値とする結合された連想配列を作成します。次に、高階配列関数を使用して以下の操作を実行してください:

  1. array_filter() とカスタムコールバック関数を使用して、最小労働時間のしきい値以上の時間働いた従業員のみを抽出します。
  2. array_map() とカスタムコールバック関数を使用して、フィルタリングされた従業員の残業代を計算します(残業は40時間を超える分であり、通常の時給 $25 の1.5倍のレートで支払われます)。
  3. array_reduce() とカスタムコールバック関数を使用して、フィルタリングされたすべての従業員の合計残業代を計算します。

結果を以下の形式で出力してください:

  • まず、条件を満たした各従業員の名前と残業代を、Name: $Amount という形式(小数点以下2位まで)で個別の行に出力します。
  • 最後に、合計残業代を Total: $Amount という形式(小数点以下2位まで)で出力します。

計算の詳細:

  • 通常労働時間(40時間まで):時給 $25
  • 残業時間(40時間を超える分):時給 $37.50(1.5倍のレート)
  • 従業員の労働時間が40時間以下の場合は、残業代は $0.00 となります。

入力形式:

  • 1行目:カンマ区切りの従業員名(例:Alice,Bob,Charlie,Diana,Eve
  • 2行目:数値としてのカンマ区切りの労働時間(例:45,32,50,28,40
  • 3行目:数値としての最小労働時間のしきい値(例:35

期待される出力: 条件を満たした各従業員とその残業代を個別の行に出力し、その後に合計残業代を出力します。すべての金額は小数点以下2位までフォーマットしてください。

自分で試してみよう

<?php
// 入力を読み込む
$names = explode(',', trim(fgets(STDIN)));
$hours = explode(',', trim(fgets(STDIN)));
$minHours = intval(trim(fgets(STDIN)));

// 時間を整数に変換する
$hours = array_map('intval', $hours);

// 名前と時間を組み合わせた連想配列を作成する
$employees = array_combine($names, $hours);

// TODO: 以下にコードを記述してください
// 1. array_filter() を使用して、最低労働時間以上の従業員を抽出する
// 2. array_map() を使用して、抽出された従業員の残業代を計算する
// 3. array_reduce() を使用して、残業代の合計を計算する

// 結果を出力する
// 条件を満たした各従業員の残業代を表示する
// 残業代の合計を表示する

?>

論理とフローのすべてのレッスン