Php 使用数组映射构建时间数组-关联数组的可能性?

Php 使用数组映射构建时间数组-关联数组的可能性?,php,arrays,recursion,array-map,Php,Arrays,Recursion,Array Map,我正在尝试用四分之一小时的时间填充一个下拉列表。键是选项值,值是选项文本 private function quarterHourTimes() { $formatter = function ($time) { return date('g:ia', $time); }; $quarterHourSteps = range(25200, 68400, 900); return array_map($formatter, $q

我正在尝试用四分之一小时的时间填充一个下拉列表。键是选项值,值是选项文本

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)

e、 g.数组应如下所示:

$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'],
    ...
];
我的解决方案-转储阵列映射:

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

我想你是在找这样的东西

<?php
function formatter($time) {
          return array (date('g:i', $time) => date('g:ia', $time));
      };

 function quarterHourTimes() {

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

      return array_map('formatter', $quarterHourSteps);
}

print_r (quarterHourTimes());

?>


您的功能可以轻松替换为:

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

结果是关联数组,如。

注意“递归”一词:
array\u map()
将您赋予它的函数应用于您提供的数组中的每个元素。如果您提供的回调函数没有调用自身,那么就没有递归。@crennie-您说得对,很好。-我以前试过递归地做,问题是递归地做。为了解决这个问题,我删除了递归,但忘了更改标题。我的错。你的功能很好-但是数组键错了。需要以下输出。我想我不能使用数组映射来实现这个目的。