/**
* @param string $hisStart
* @param string $hisEnd
* @param int $range
* @param string $format
*
* @return array
*/
function createHisRange($hisStart = '00:00:00', $hisEnd = '23:59:59', $range = 3600, $format = 'H:00:00')
{
$t1 = strtotime($hisStart);
$t2 = strtotime($hisEnd);
$arrHis = array();
while($t1 < $t2){
$arrHis[] = date($format,$t1);
$t1 += $range;
}
return $arrHis;
// return array_map(function ($time) {
// return date($format, $time);
// }, range(strtotime($hisStart), strtotime($hisEnd), $range));
}
测试
$s = createHisRange();
print_r($s);
/*
Array
(
[0] => 00:00:00
[1] => 01:00:00
[2] => 02:00:00
[3] => 03:00:00
[4] => 04:00:00
[5] => 05:00:00
[6] => 06:00:00
[7] => 07:00:00
[8] => 08:00:00
[9] => 09:00:00
[10] => 10:00:00
[11] => 11:00:00
[12] => 12:00:00
[13] => 13:00:00
[14] => 14:00:00
[15] => 15:00:00
[16] => 16:00:00
[17] => 17:00:00
[18] => 18:00:00
[19] => 19:00:00
[20] => 20:00:00
[21] => 21:00:00
[22] => 22:00:00
[23] => 23:00:00
)
*/
问题
如何将 $format 传入到 array_map 当中
关键字:闭包
最优解当然是像 @picasso250 一样用use了
如果用不了use关键字的话低版本的话还可以用global:
当然用Class写这个也是可以的,就是看起来特别麻烦...
好吧,我大概只是来提供不同的解法的...