为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

不负相思意 2019-04-13 08:46:43
/***@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($t100: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当中
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

returnarray_map(function($time)use($format){
returndate($format,$time);
},range(strtotime($hisStart),strtotime($hisEnd),$range));
关键字:闭包
                            
查看完整回答
反对 回复 2019-04-13
?
富国沪深

TA贡献1790条经验 获得超9个赞

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();好吧,我大概只是来提供不同的解法的...
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信