项目有个需求 :
页面上有一个根据不同的时间显示不 同的购买人数 !人数的值 要现在总是之前的多!从开始到结束时间! 这个代码需要可以复用 !因为之前很多很多这样的需求,而且最好降低下次修改的代码量 。
设计思想
第一次的时间+随机数
第二次时间=第一次时间+随机数
第N次时间=N-1+rand();
同理 显示购买人数也是这样:
贴代码吧
<?php date_default_timezone_set('Asia/Shanghai'); require_once 'cache.php'; require_once 'data.php'; //开始和结束时间 $strattime = "2013-05-13 00:00:00"; $endtime = "2013-05-20 23:59:59"; //当前时间 $nowtime = time(); $lasttime = strtotime($strattime); $nexttime = $lasttime+rand(1000, 3000); //判断数据 如果不存在 就初始化 if (!isset($last_array)){ $last_array = array( array( "num"=>0, "lasttime"=>$lasttime, "nexttime"=>$nexttime, "key" =>0 ) ); $file="data.php"; cache_write($file,$last_array,'last_array',false); } echo "下一个时间 是:".date('Y-m-j H:i:s ',$nexttime)."<br>"; echo "当前时间 是:".date('Y-m-j H:i:s ')."<br>"; //获取到 数组的最后一个元素 $endarray= end($last_array); echo "数据时间 是:".date('Y-m-j H:i:s ',$endarray['lasttime'])."开始<br>"; echo "数据时间 是:".date('Y-m-j H:i:s ',$endarray['nexttime'])."结束<br>"; //如果处于这个时间段则随机显示 if($nowtime>strtotime($strattime) && $nowtime<strtotime($endtime)){ if ( $nowtime > $endarray['nexttime']){ $number = $endarray["num"]+rand(1, 6); //修改文件 $arr = array( "num"=>$number, "lasttime"=>$endarray['nexttime'], "nexttime"=>$endarray['nexttime']+rand(1000, 3000), "state" =>0 ); array_push($last_array, $arr); $file="data.php"; cache_write($file,$last_array,'last_array',false); } $endarray= end($last_array); //当前次数 $nowNum = $endarray['num']; }else { //当前次数 $nowNum = $endarray['num']; } echo $nowNum;cache.php 文件
<?php //写入 function cache_write($filename,$values,$var='rows',$format=false){ $cachefile=$filename; $cachetext="<?php\r\n".'$'.$var.'='.arrayeval($values,$format).";"; return writefile($cachefile,$cachetext); } //数组转换成字串 function arrayeval($array,$format=false,$level=0){ $space=$line=''; if(!$format){ for($i=0;$i<=$level;$i++){ $space.="\t"; } $line="\n"; } $evaluate='Array'.$line.$space.'('.$line; $comma=$space; foreach($array as $key=> $val){ $key=is_string($key)?'\''.addcslashes($key,'\'\\').'\'':$key; $val=!is_array($val)&&(!preg_match('/^\-?\d+$/',$val)||strlen($val) > 12)?'\''.addcslashes($val,'\'\\').'\'':$val; if(is_array($val)){ $evaluate.=$comma.$key.'=>'.arrayeval($val,$format,$level+1); }else{ $evaluate.=$comma.$key.'=>'.$val; } $comma=','.$line.$space; } $evaluate.=$line.$space.')'; return $evaluate; } //写入文件 function writefile($filename,$writetext,$openmod='w'){ if(false!==$fp=fopen($filename,$openmod)){ flock($fp,2); fwrite($fp,$writetext); fclose($fp); return true; }else{ return false; } }
data.php就是一个空文件 供index.php 写入数据就可以了