PHP 的这个函数array_map如何优化(如何传入参数)

/**
*@paramstring$hisStart
*@paramstring$hisEnd
*@paramint$range
*@paramstring$format
*
*@returnarray
*/
functioncreateHisRange($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;
//returnarray_map(function($time){
//returndate($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当中
不负相思意
浏览 220回答 2
2回答

精慕HU

returnarray_map(function($time)use($format){returndate($format,$time);},range(strtotime($hisStart),strtotime($hisEnd),$range));关键字:闭包

富国沪深

returnarray_map(function($t)use($f){returndate($f,$t);},range(strtotime($s),strtotime($e),$r));如果用不了use关键字的话低版本的话还可以用global:$format="H:i:s";functionfm($t){global$format;returndate($format,$time);}array_map('fm',range(strtotime($hisStart),strtotime($hisEnd),$range));当然用Class写这个也是可以的,就是看起来特别麻烦...ClasshisRange{public$s,$e,$r,$f;function__constructor($s='00:00:00',$e='23:59:59',$r=3600,$f='H:00:00'){$this->s=strtotime($s);$this->e=strtotime($e);$this->r=$r;$this->f=$f;}functionrun(){returnarray_map(array($this,'fm'),range($this->s,$this->e,$this->r));}functionfm($t){returndate($this->f,$t);}}$range=newhisRange();$s=$range->run();好吧,我大概只是来提供不同的解法的...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript