0

ドロップダウン リストに 15 分の時間を入力しようとしています。キーはオプション値で、値はオプション テキストです。

private function quarterHourTimes() {
      $formatter = function ($time) {
          return date('g:ia', $time);
      };
      $quarterHourSteps = range(25200, 68400, 900);

      return array_map($formatter, $quarterHourSteps);
}

問題は、上記の関数は機能しますが、連想配列としては機能しないようです。この問題に対するエレガントな解決策はありますか?

キーについては、次の形式の時間を希望しますdate('H:i', $time);

たとえば、配列は次のようになります。

$times = 
[
    ['07:00' => '7:00am'],
    ['07:15' => '7:15am'],
    ['07:30' => '7:30am'],
    ['07:45' => '7:45am'],
    ['08:00' => '8:00am'],
    ['08:15' => '8:15am'],
    ...
];

私の解決策 - array_map をダンプします。

private function myQuarterHourTimes()
{


    $quarterHourSteps = range(25200, 68400, 900);

    $times = array();
    foreach(range($quarterHourSteps as $time)
    {
        $times[date('H:i', $time)] = date('g:ia', $time);
    }

    return $times;
}
4

2 に答える 2

1

関数は次のように簡単に置き換えることができます。

$result = array_reduce(range(25200, 68400, 900), function(&$cur, $x)
{
   $cur[date('H:i', $x)] = date('g:ia', $x);
   return $cur;
}, []);

このような連想配列になります。

于 2014-03-05T10:41:14.950 に答える